QT自定義型別作為槽函式的引數

2021-10-09 08:26:55 字數 764 閱讀 7638

正常情況下訊號與槽之間只能傳遞通用資料型別,如:int。像qvector、結構體等型別就不能傳遞了,需要對複雜資料進行一些包裝。

具體思路是:將複雜結構的資料報裝成通用資料型別(qvariant)放入訊號及槽函式中傳遞,在槽函式中使用時再轉化為原來的資料型別。

(1)訊號的.**件

#include

#include

#include

q_declare_metatype

(qvector<

int>);

class

a;

(2)訊號的.cpp檔案

a::a(

)

(3)槽所在的標頭檔案

#include

#include

//q_declare_metatype(qvector); 訊號標頭檔案已定義

class

b;

(4)槽所在的.cpp檔案

//還原資料

void zzcnormalmgrdlgthread::

on_signal_deldatafromdatabase

(qvariant vrowinfo)

(5)connect所在的檔案

#include

void ***

Qt 建立槽函式自定義型別引數

我們經常使用qt的槽函式。當我們想傳送自己定義的型別引數時候,槽函式會識別出來,無法使用槽函式 舉例 struct fbcedata 傳送的函式為 void senddata fbcedata abc 我們要在對應的連線槽函式的時候要註冊這個類。我這裡採用的是指標的方式。include qregis...

Qt之註冊自定義型別訊號槽函式

typedef struct mytype 在構造裡面新增即可 qregistermetatype mytype 註冊自定義型別訊號槽 使用方法和平時使用一樣 signals void sgl slt mytype mytype type public slots void slt mytype m...

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...