正如主题所说,我正在从非 GUI 线程(确切地说是一些 GStreamer 线程)发布事件。代码如下所示:
GstBusSyncReply on_bus_message(GstBus* bus, GstMessage* message, gpointer data)
{
bool ret = QMetaObject::invokeMethod(static_cast<QObject*>(data), "stateChanged", Qt::QueuedConnection);
Q_ASSERT(ret);
return GST_BUS_PASS;
}
问题是,stateChanged
(不管是槽还是信号)没有被调用。我已经开始QMetaObject::invokeMethod
使用调试器,一直跟踪它直到它被调用PostMessage
(顺便说一下,它是 Windows 上的 Qt 4.6.2)——一切似乎都很好。
生活在 GUI 线程中的对象data
,我已经仔细检查了这一点。
我该如何调试这个问题?或者,更好的是,也许完全避开它?