Qt 訊號槽傳遞結構體引數

2021-10-06 13:36:45 字數 702 閱讀 5556

(1) 需要註冊結構體引數,在結構體中宣告結束的地方加上結構體註冊。

typedef struct s_exceptionnotifydata

exceptionnotifydata;

q_declare_metatype(exceptionnotifydata);

(2)訊號定義

signals:

void signalrealexceptiondata(qvariant vardata);

(3)槽函式定義

void recvrealexceptiondata(qvariant vardata);

(4)訊號槽連線

connect(ccc::_cur, &ccc::signalrealexceptiondata, this, &aaaa::recvrealexceptiondata, qt::directconnection);

(5)傳送訊號的時候用變數qvariant包裝結構體

qvariant vardata;

vardata.setvalue(exceptionnotifydata );

emit signalrealexceptiondata(vardata);

(6)接收訊號的地方從包裝中取出結構體

exceptionnotifydata notifydata;

notifydata= vardata.value();

QT訊號槽傳遞引數技巧

訊號槽如何傳遞引數 或帶引數的訊號槽 利用qt進行程式開發時,有時需要訊號槽來完成引數傳遞。帶引數的訊號槽在使用時,有幾點需要注意的地方,下面結合例項進行介紹。第一點 當訊號與槽函式的引數數量相同時,它們引數型別要完全一致。訊號 cpp view plain void isignal intb 槽 ...

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

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

Qt槽和訊號引數

qt的訊號只需要申明。不需要定義 signals void signala int a qt的槽和普通的成員函式是一樣的,可以加上public potected 以及virtual等標記 public void slota int a 把這兩個用connect連線起來,這裡的signal signa...