2012-12-08 65 views
1

這是一個關於qthreads的普遍問題,我知道如何使用movethread()函數,但是這個函數並不是動態創建的。是否可以將動態創建的對象移動到qthread中?

用戶將通過選擇添加按鈕在GUI應用程序上創建對象。如果用戶想要刪除已創建的對象,則還可以使用刪除按鈕。用戶應該能夠從列表視圖中選擇對象。我已經使用qstyleditemdelegate創建了自定義列表視圖的示例,我知道如何將列表移動到模型中。我很擔心線程。

我想要做的是允許用戶動態地創建某個類的對象。然後將每個對象移動到qthread中。我應該繼續尋找嗎?任何提示,技巧或提示?

我可以創建一個將對象移動到線程中的函數嗎?

Pseudo Code: 
void MoveThisObject(MyCustomObject Object) 
{ 
     QThread* thread = new QThread; 
     Object->moveToThread(thread); 
     /****setup connections****/ 

     thread->start(); 
} 

我還在寫下我需要的東西,我沒有真正創建實際的應用程序。

+0

首先關注:你正在通過值來傳入'Object'。所以,被移動的對象將直到「MoveThisObject()」結束。正如你所說的'Object->',你可能錯過了'*' –

+0

由於用戶可以選擇列表視圖項目,我可以使用索引值來找到正在爲該選定項目運行的線程嗎? –

+1

聽起來就像你想存儲生成的線程,例如在'QHash '中。 –

回答

1

您可以將QObject(只要它不是QWidget,當然)移動到不同的線程,無論它是否是動態創建的。大多數應用程序中的大多數QObject都是動態創建的,否則它們很難形成多態。