在QT 4.7中,我可以實例化一個新的QThread,並將我的對象移動到該線程。然而,在QT 4.3中,它抱怨QThread run()是純虛擬的,我不能實例化它?這是從4.3更新版本更改?QT 4.3是否強迫您繼承QThread?
如果是這種情況,我如何使用我所需的信號和插槽將我的對象移動到sublasssed QThread?
在QT 4.7中,我可以實例化一個新的QThread,並將我的對象移動到該線程。然而,在QT 4.3中,它抱怨QThread run()是純虛擬的,我不能實例化它?這是從4.3更新版本更改?QT 4.3是否強迫您繼承QThread?
如果是這種情況,我如何使用我所需的信號和插槽將我的對象移動到sublasssed QThread?
這是從4.3更新的版本?
是的,至少從Qt 4.8開始,它被改變了。
檢查文檔:http://doc.qt.io/qt-4.8/qthread.html#run
的起點線。在調用start()之後,新創建的線程將調用此函數。 默認實現只調用exec()。
如果是這種情況,我如何使用我所需的信號和插槽將我的對象移動到sublasssed QThread?
QThread
派生本身QObject
,所以單純從QThread
而不是QObject
derove。你的信號會起作用。
請注意,在連接插槽和信號時,您可能需要處理connect
函數的第四個隱藏參數。此參數指定多線程程序中的連接行爲。
一切工作謝謝大家 – zacharoni16
難道你不能簡單地讓你的對象派生於QThread嗎? – jpo38
我會試試看,如果信號和插槽不是從Qobject派生的,我是否會繼續工作? – zacharoni16
而你被困在Qt 4.3中?無論如何,只是將它分類並添加缺失的部分。 – hyde