傳遞自定義C++類型到qml

關(guān)鍵點就是使用Q_GADGET、并注冊為元對象qRegisterMetaType<Song>();

//song.h 只有一個頭文件

class Song

{

? ? Q_GADGET

public:

? ? explicit Song();

? ? Song(const Song& song):

? ? ? ? sourceType(song.sourceType)

? ? {

? ? }

? ? ~Song(){}

Q_PROPERTY(int sourceType READ getSourceType)

int sourceType;

int getSourceType() const{return sourceType;}

};

calss SongGetter{

public:

Q_INVOKABLE getSong()

{

? ? Song song_;

????...

? ? emit?songArrive(song_);

}

signals:

? ? void songArrive(Song song);

}

//main.h

qRegisterMetaType<Song>();

qmlRegisterType("Alex.SongGetter",1,0,"SongGetter");


//xxxx.qml,再qml使用

import Alex.SongGetter1.0

SongGetter{

? ? ? ? id:client

? ? ? ? onSongArrive: {

????????console.log(song.name)

? ? ? ? }

? ? }


不需要使用qmlRegisterType去注冊Song,可以通過信號傳遞Song到qml中。


說的可能有點太簡潔了,其實卻是很簡單,一共就兩步:

1.Song的代碼,即song.h,

2.是用qRegisterMetaType<Song>();注冊MetaType。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容