应该是可以的,我刚才测试了一下,应该没问题。
mywidget。cpp内容如下:
#include "myWidget.h"
void MyWidget::changeText()
{
biao->setText("changed text!");
for(int i =0;i<1024*10;++i){
//biao->setText("changed text!");
char buf[128];
sprintf(buf,"%d",i);
edit->setText(buf);
biao->setText(buf);
}
}
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
gaibian = new QPushButton("gaibian",this);
biao = new QLabel("wu",this);
edit = new QLineEdit(this);
i=0;
connect(gaibian, SIGNAL(clicked()), this, SLOT(changeText()));
startTimer(0);
layout = new QVBoxLayout;
layout->addWidget(edit);
layout->addWidget(gaibian);
layout->addWidget(biao);
setLayout(layout);
}
void MyWidget::timerEvent(QTimerEvent *event)
{
char buf[128];
sprintf(buf,"%d",i++);
edit->setText(buf);
biao->setText(buf);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
mywidgert。h内容如下:
#ifndef __MYWIDGET__
#define __MYWIDGET__
#include <QApplication>
#include <QString>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QWidget>
#include <QLineEdit>
class MyWidget : public QWidget
{
Q_OBJECT
protected:
QPushButton *gaibian;
QLabel *biao;
QVBoxLayout *layout;
QLineEdit *edit;
void MyWidget::timerEvent(QTimerEvent *event);
int i;
public:
MyWidget(QWidget *parent = 0);
public slots:
void changeText();
};
#endif
不知道这样测试科学不.新学QT,但是好像QT也和MFC一样有消息泵,也就是说你在一个槽里面你用for循环改变LineEdit的值的话,他是不能即时的更新的,需要手工调配消息(MFC里面是这样)QT偶还没有到那个水平~等高手吧