QT 中的应用程序>处理消息?
Application->Processmessages in QT?
在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++中具有公共抽象类的对象的消息
- 在 for 循环中处理复杂的发送 recv 消息
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 如何判断SSL_read是否已经接收并处理了来自单个消息的所有记录
- 如何处理WM_SETTEXT消息
- 如何避免 boost 的野兽body_limit错误并正确处理大消息
- 使用C++处理火狐错误消息"无法加载XPCOM"
- Aysnc 处理程序用于 POCO Websocket 中的传入消息
- 奇怪的消息 (_Base_bitset::_M_do_to_ulong) 从溢出异常处理程序中打印出来
- 从处理程序捕获时如何获取 Ada 异常消息C++?
- 核心消息传递中未处理的异常.dll在程序关闭期间
- 如何处理窗口的消息?
- 处理WM_POINTER消息时,如何检测双击/点击
- 如何在winApi上正确创建按钮以及处理其消息
- 如何处理许多不同的输入二进制消息类型
- 将 WndProc 替换为另一个函数来处理消息
- QT 中的应用程序>处理消息?
- 如何在WinApi C++包装器中处理消息
- System.IO.FileNotFoundException未经处理消息=“找不到指定的模块.(HRESULT中的异常
- 使用GLFW渲染和WinAPI处理消息