gpt4 book ai didi

c++ - QT 中的应用程序-> 处理消息?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:58 24 4
gpt4 key购买 nike

在 Borland 6 中,我经常使用它来解开程序操作:

Application->Processmessages();

现在,对于 QT 4.8.1,我没有在 QT 的这个外国(对我来说)文档中找到。

谁能帮帮我?

最佳答案

在 Qt 中,您将使用静态函数 QApplication::processEvents()

唉,你的问题是你的代码设计有问题。您永远不需要调用 processEvents 来简单地“解开”事情。您所有的 GUI 代码都应该由运行到完成的方法组成,这些方法需要很短的时间(大约几毫秒:~0.001 秒)。如果某件事需要更长的时间,您必须将其分成更小的部分,并在处理完每个部分后将控制权返回给事件循环。

这是一个例子:

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 移动到工作线程。

关于c++ - QT 中的应用程序-> 处理消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com