我有一个关于Qt及其信号/插槽机制的问题。
我已经创建了一个自定义小部件,并且我创建了一个自定义SIGNAL
(ShowMessage)。该信号连接到SLOT
,它在我的主窗口的状态栏中显示消息(以及指定的超时)。强制Qt自定义信号立即被处理?
现在,我在我的课上有一个操作需要很长时间来执行,并且它阻止了用户界面。我希望emit
我的信号在开始操作之前,当它结束时,emit
它再次更新状态栏;是这样的:
emit ShowMessage(message, timeout);
// Do the long operation
emit ShowMessage(newMessage, timeout);
但我的问题是,它似乎是Qt的等待,直到整个操作完成,并只更新与newMessage
状态栏。
有没有办法以某种方式“强制”我的信号立即处理,因为如果我想诉诸线程,那么我的生活会变得更加复杂!
这个长期操作是什么?为什么很难将其移至新线程? – thuga
你使用Qt :: DirectConnection连接吗? - 这应确保您的信号已经立即处理完毕。如果不是,那么你应该使用调试器来查看发生了什么。我假设这一切都发生在同一个GUI线程? –
对不起,但我不明白'Qt :: DirectionConnection'的含义。我是Qt的新手,我将它用作OpenGL图形的容器。 – Farzad