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