multithreading - 在 4.5处,从非Qt线程或者 ouside Qt主事件循环发出Qt信号

  显示原文与译文双语对照的内容
0 0

我从非Qt线程中调用 emit signal1() 。 非Qt线程,我指的不是来自于GUI事件循环,也不是来自任何 QThread run() 方法或者任何QThread自己的事件循环。

它仅仅是一个 pthread ( pthread_create ( ) ),它调用了一个发出信号的QObject的方法。

比如:


MyQbject: public QObject
{
...
void emitBunchOfSignals()
{
 emit signal1();
 emit signal2();
.. .
}
...
}

我的pthread的"跑步"方法,它有一个指向MyObject实例( 。在主 Qt GUI线程上下文中创建的实例不是 pthread )的指针,调用 emitBunchOfSignals() 方法。

在 Qt 4.5之前。 现在 Qt 4.5能处理? 它是调用 qApp->PostEvent() 还是什么,以便在 Qt GUI线程( 因此 slot 也是) 中发出信号?

谢谢

时间: 原作者:

0 0

你需要确保你使用的是一个排队的连接到来自一个线程的队列,因为Qt不能autmatically表示属于哪个线程("线程关联"文档中使用的术语)的对象。 连接时执行以下操作:


connect(src, SIGNAL(signal-signature), dest, SLOT(slot-signature), Qt::QueuedConnection);

这将导致信号被放置在目标的事件循环中,并且在线程运行时调用 slot ( 例如 ) 。 它的事件循环) 。

...