1. 程式人生 > >Qt中通過訊號和槽在子執行緒和主執行緒中進行資料傳遞

Qt中通過訊號和槽在子執行緒和主執行緒中進行資料傳遞

QT中兩個執行緒之間進行自定義型別資料傳遞

兩個執行緒中進行資料傳遞時,傳遞的資料放到佇列中(queue),所以在這個過程中,需要在傳遞前將資料拷貝、儲存到佇列中;為了儲存這些引數,Qt需要construct、destruct、copy這些物件,為了讓Qt知道怎樣去做這些事情,引數型別需要進行註冊。詳細步驟分為三步:

  1. 加入標頭檔案#include <QMetaType>

  2. 宣告要傳遞的引數型別Q_DECLARE_METATYPE(MyClass)

  3. 在使用connect之前,進行註冊,加上qRegisterMetaType<MyClass>("MyClass")