簡體   English   中英

從非Qt線程或ouside Qt主事件循環發出Qt信號,為4.5

[英]emit Qt signal from non Qt Thread or ouside Qt main event loop with at 4.5

我從非Qt線程調用emit signal1() 非Qt線程我的意思不是來自GUI事件循環而不是來自任何QThread run()方法或任何QThread自己的事件循環。

它只是一個pthread(pthread_create()),它調用一個發出信號的QObject方法。

例如:

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

我的pthread的“run”方法,它有一個指向MyObject實例的指針(在主Qt GUI線程上下文而不是pthread中創建的實例)調用emitBunchOfSignals()方法。

在Qt 4.5之前,這是令人討厭的。 現在,Qt 4.5會處理這個嗎? 它是否調用qApp->PostEvent()或其他東西,以便在Qt GUI線程內發出信號(因此也是插槽)?

謝謝

您需要確保使用與線程的排隊連接,因為Qt無法自動檢測哪個對象屬於哪個線程(“線程關聯”是文檔中使用的術語)。 您在連接時執行以下操作:

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

這將導致信號被放置在目標的事件循環上,並且當其線程正在運行時(即其事件循環)調用該槽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM