Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt中带有多线程的事件处理程序_C++_Qt_Events - Fatal编程技术网

C++ Qt中带有多线程的事件处理程序

C++ Qt中带有多线程的事件处理程序,c++,qt,events,C++,Qt,Events,有人知道事件处理程序如何管理发布的事件吗 在我的应用程序中,我有两个线程(guiThread和computationThread)。抛出异常后,我调用现有对话框的postEvent(…)。Qt事件处理程序将保留此事件,直到对话框关闭 对不起,我的问题有点模糊。如果我还有时间,我会写得更准确些。我找到了一份工作。但对我来说,这个问题仍然很有趣。正如Qt文档中提到的: 当控件返回到主事件循环时,将使用notify()函数发送队列中存储的所有事件 …这解释了为什么Qt事件处理程序在对话框关闭之前一直

有人知道事件处理程序如何管理发布的事件吗

在我的应用程序中,我有两个线程(guiThread和computationThread)。抛出异常后,我调用现有对话框的
postEvent(…)
。Qt事件处理程序将保留此事件,直到对话框关闭



对不起,我的问题有点模糊。如果我还有时间,我会写得更准确些。我找到了一份工作。但对我来说,这个问题仍然很有趣。

正如Qt文档中提到的:

当控件返回到主事件循环时,将使用notify()函数发送队列中存储的所有事件

…这解释了为什么Qt事件处理程序在对话框关闭之前一直保留事件


如果我正确理解您想要做什么,我会尝试使用。

我猜您创建的对话框是模态的,这意味着它正在运行自己的事件循环。在退出所有模式事件循环之前,不会处理发布到常规GuitThread的事件


或者,如果您需要对话框是模态的并且了解事件,您可以将事件直接发布到对话框中。您需要弄清楚如何以共享的方式处理指针,但如果没有什么复杂的事情发生,您可能可以使用QApplication::activeWindow()函数。

正如其他人所写,我相信这种行为是由对话框启动自己的事件循环这一事实造成的

如果使用Qt4,可以尝试使用作为发布事件的替代方法