Qt 訊號和槽的小問題(新手向)

2021-10-22 20:40:32 字數 1272 閱讀 1245

qt專案報錯: static assertion failed: signal and slot arguments are not compatible(訊號和槽的引數不對應)

例:槽函式:

void a::give(qstring a)
執行第二個connect函式時將會報錯: static assertion failed: signal and slot arguments are not compatible

原因:clicked函式的引數為布林型別,而槽函式asignal的引數為qstring型別,導致鏈結失敗

解決方法:

1 鏈結乙個返回值為bool或者void的槽函式,才該函式中使用emit啟用

void(a

::*asignanl)

(qstring)=&

a::give;

void(b

::*bsignanl)

(qstring)=&

b::hungry;

connect

(tea,asignal,stu,bsignal)

; qpushbutton *btn=

newqpushbutton

("dianji"

,this);

void widget ::c()

connect

(btn,

&qpushbutton:

:clicked,tea,

&widget:

:c);

2 使用欄目他表示式直接接收訊號

void(a

::*asignanl)

(qstring)=&

a::give;

void(b

::*bsignanl)

(qstring)=&

b::hungry;

connect

(tea,asignal,stu,bsignal)

; qpushbutton *btn=

newqpushbutton

("dianji"

,this);

connect

(btn,

&qpushbutton:

:clicked,[=

]())

;}

注意:1.訊號和槽函式的引數,型別必須進行一一對應

2.訊號和槽函式的引數數量可以不一致,則訊號的引數應該多於槽函式的引數,切對應的引數一致

QT 訊號和槽連線問題

1 networ 程連線設定介面 不要用訊號和槽 connect network getinstance this,x netwok網路連線後傳送訊號emit 但是這樣會導致 network已經連線成功,且emit了訊號,但是connect連線還沒成功,所以介面上的槽函式不會響應 解決方案 在net...

Qt訊號和槽

qt將訊號和槽關聯起來的connect使用時需要注意帶相應的引數,否則會出現訊號發出後不能呼叫槽的問題,例子如下 發出訊號的宣告 signals void receiveddata uchar dat,uint len 接收訊號的槽宣告 private slots void getdata ucha...

Qt 訊號和槽

函式原型 qobject connect const qobject sender,const char signal,const qobject receiver,const char method,qt connectiontype type qt autoconnection 通常使用的con...