我從非Qt線程調用emit signal1()
。 非Qt線程我的意思不是來自GUI Event Loop,也不是來自任何QThread run()方法或任何QThread自己的事件循環。從非Qt線程或外部Qt主事件循環中發出Qt信號,並且在4.5
它只是一個調用發出信號的QObject的方法的pthread(pthread_create())。
例如:
MyQbject: public QObject
{
...
void emitBunchOfSignals()
{
emit signal1();
emit signal2();
...
}
...
}
我的並行線程的「運行」方法,它有一個指向MyObject的實例(實例是主要的Qt的圖形用戶界面線程不是上下文並行線程中創建)調用emitBunchOfSignals()
方法。
在Qt 4.5之前,這是討厭的。現在,Qt 4.5是如何處理這個問題的? 它是否調用qApp->PostEvent()
或其他東西,使信號在Qt GUI線程(以及插槽中)內發射?
感謝
當您調用connect時,您可能會顯式地將類型設置爲排隊連接。 – 2010-01-15 15:46:42
在你寫下這個問題的時候,你可以打開代碼並尋找自己。 – shoosh 2010-01-15 16:00:04
它似乎並沒有像Qt 3.xx一樣崩潰。 我熟悉連接選項(直接連接queuedconnection等),但我認爲它只能在QTreads或QThread和主事件循環之間起作用。爲什麼它曾經與Qt 3.xx一起崩潰,至少通過查看代碼並不是直截了當的理解。我瘋了嗎 ? – 2010-01-15 16:10:27