我想知道Qt中的排队事件是否与事件和信号相同(不是从与接收到的插槽相同的线程发出的,因此排队。)
所以要明确,我们有:
还是我们有
答案 0 :(得分:3)
只有一个队列。 invokeMethod()生成一个QEvent,它是一个“QMetaCallEvent”。它是事件索引43,您可以在此处看到QEvent::MetaCall
:
http://doc.qt.io/qt-5/qevent.html#Type-enum
它被放入qmetaobject.cpp
...的队列中,其中“调用”触发对QApplication的postEvent的调用。以下是在更新broken gitorious links
/src/corelib/kernel/qmetaobject.cpp
line 2228
没有传递“优先级”参数,因此信号/插槽调用始终为Qt::NormalEventPriority。
这个细节在文档中并没有真正合同布局,所以我会谨慎地假设将来对每个平台和版本的行为过多。如果您需要在程序的某些部分订购严格的事件处理合同,那么最好编写自己的显式协议。