QT 訊號槽傳遞自定義資料結構

2021-07-30 09:44:28 字數 686 閱讀 9397

定義乙個結構體

struct mystruct

;

通過訊號槽傳遞該結構體

connect(this, signal(m_signal(mystruct)), this, slot(m_slot(mystruct)));
這樣做是行不通的,正確的做法:

通過q_declare_metatype宣告自定義的結構體

struct mystruct

;q_declare_metatype(mystruct);

然後以qvariant代替自定義的結構體

connect(this, signal(m_signal(qvariant)), this, slot(m_slot(qvariant)));
在發射訊號前,將自定義結構體打包為qvariant

mystruct mstruct;

qvariant data;

data.setvalue(mstruct);

emit signal_child(data);

在槽函式中,解析qvariant

mystruct mstruct = data.value();

Qt訊號槽傳遞自定義結構體

qt的訊號和槽可以傳遞int double等c 常用型別變數,也可以傳遞qvector qmap等qt的容器類 當然也可以傳遞qt定義的型別 那麼qt的訊號和槽如何傳遞自定義的結構體呢。首先在定義結構體的同時需要使用q declare metatype。通過這個巨集定義可以將自定義的型別註冊到qt的...

Qt5訊號槽傳遞自定義資料

本文介紹qt5傳遞自定義資料,非同步處理請求,如下 include 介面命令資料結構 typedef struct cmdrequest cmdrequest 命令處理結果資料結構 typedef struct rstresponse rstresponse 通過槽函式接收命令資料,非同步處理結果後...

Qt自定義訊號槽

qt自定義訊號槽,在控制台程式中實現 qt5 如下 qt5 include news h class news public qobject void send signals void new const qstring name private qstring m name reader.h i...