在Borland公司6我经常用这个来脱胶程序操作:
Application->Processmessages();
现在,QT 4.8.1,我没有QT的这个外国(对我来说)文档中找到。
谁能帮我?
在Borland公司6我经常用这个来脱胶程序操作:
Application->Processmessages();
现在,QT 4.8.1,我没有QT的这个外国(对我来说)文档中找到。
谁能帮我?
在Qt中,你会使用静态函数QApplication::processEvents()
唉,你的问题是,你的代码的设计被打破。 你永远不应该需要调用processEvents
简单地“脱胶”的事情。 您的所有GUI代码应包括这需要很短的时间运行到完成方式(单毫秒的量级上:〜0.001S)。 如果有什么需要更长的时间,你必须把它分解成更小的部分,并处理每一段后返回控制事件循环。
下面是一个例子:
class Worker: public QObject
{
Q_OBJECT
int longWorkCounter;
QTimer workTimer;
public:
Worker() : ... longWorkCounter(0) ... {
connect(workTimer, SIGNAL(timeout()), SLOT(longWork());
}
public slots:
void startLongWork() {
if (! longWorkCounter) {
workTimer.start(0);
}
}
private slots:
void longWork() {
if (longWorkCounter++ < longWorkCount) {
// do a piece of work
} else {
longWorkCounter = 0;
workTimer.stop();
}
}
};
零期间计时器是让你的代码在每次事件队列为空叫的一种方式。
如果你调用第三方堵库代码,那么唯一的(不幸)的解决办法是把这些操作成一个QObject插槽,并移动到QObject的工作线程。