當前位置:成語大全網 - 書法字典 - 如何在Qt中使用自定義數據類型

如何在Qt中使用自定義數據類型

如何在Qt中使用自定義數據類型

Q_DECLARE_METATYPE,Qt自定義類型

這裏我們用下面的struct來說明(這裏struct和class都是壹樣的):

結構播放器

{

int數;

QString名字;

QString lastName

};

復制代碼

QVariant

為了在QVariant中使用定制數據類型,您需要使用Q_DECLARE_METATYPE()向Qt的元系統聲明這個定制類型。如下圖所示:

結構播放器

{

...

};

Q_DECLARE_METATYPE(播放器);

復制代碼

將自定義數據類型作為QVariant傳遞時,需要使用QVariant::fromValue()或qVariantFromValue:

玩家玩家;

對象-& gt;setProperty("property ",q variant::from value(player));

復制代碼

為了方便起見,您可以在自定義類型中定義壹個QVariant()類型轉換器:

結構播放器

{

...

運算符QVariant()常量

{

返回q variant::from value(* this);

}

};

復制代碼

所以我們可以這樣使用它:

玩家玩家;

對象-& gt;setProperty("property ",播放器);

復制代碼

信號和插槽

對於直連類型(默認為直連),使用自定義數據類型作為信號參數不需要其他處理,就像內置數據類型壹樣:

連接(發送者,信號(播放器)創建(常量播放器& amp))、接收器、插槽(add Player(const Player & amp;)));

復制代碼

但是如果妳在跨線程的時候再這樣做,編譯器會給出壹個警告:

QObject::connect:無法對“Player”類型的參數進行排隊

(確保使用qRegisterMetaType()註冊了“Player”。)