由于刚刚接触QT,一个小小的数据动态显示的问题就费了好几天时间,不过弄明白了就好!
首先,正如QT中文论坛一些大侠们说的那样,用QTimer定时器,然后触发槽,在槽里更新textEdit欲显示的内容即可。
关于如何让更新后的数据在同一个QWidget上显示:就是在自己定义的类里,定义个private的QTextEdit对象,然后
在槽里引用就可以了。
真是够foolish的了!
具体代码如下:
Myform.h:
class MyMain:public QWidget
{
Q_OBJECT
public :
MyMain(QWidget *parent=0);
public slots:
void set();
private:
QWidget *widget;
QTextEdit *textEdit;
int count;
};
Myform.cpp:
#include "myform.h"
#include <QApplication>
MyMain::MyMain(QWidget *parent):QWidget(parent)
{
count=100;
textEdit=new QTextEdit(parent);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
char *str="a真的";
textEdit->setGeometry(288,30,100,30);
textEdit->setStyleSheet("font-size:18px;""background-color:black;"
"border-style:solid;""font-style:italic;""font-weight:bold;""color:white ");
textEdit->setEnabled(false);
textEdit->setText(QObject::tr(str));
}
void MyMain::set()
{
QString str=QString::number(count,10);
textEdit->setText(str);
count++;
}
main.cpp:
#include "myform.h"
#include <QObject>
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QUiLoader loader;
QFile file("designer.ui");
file.open(QFile::ReadOnly);
QWidget *third=loader.load(&file);
third->setGeometry(0,0,640,480);
MyMain w(third);
QTimer *timer=new QTimer();
timer->setSingleShot(false);
QObject::connect(timer,SIGNAL(timeout()),&w,SLOT(set()));
timer->start(1000);
third->show();
return app.exec();
}