Qt學習(1)信號和槽

信號和槽
以我自己的理解來說,信號和槽就是一個響應機制,我們提前將信號和槽連接起來,當信號被觸發時,槽函數就被調用。舉個例子來說,就相當於你聽到自己肚子叫了,你就知道你餓了,所以就去吃飯,而肚子叫就可以看作一個信號,去吃飯就可以看成與其相連的槽函數。
1:信號和槽的連接接函數:connect
2:函數參數
2.1:參數1 信號的發送者
2.2:參數2 發送的信號(函數地址)
2.3:參數3 信號的接收者
2.4:參數4 處理信號的槽函數(函數地址)
3:簡單案例
實現點擊按鈕 窗口關閉
創建按鈕 QPushButton *btn = new QPushButton(“關閉”,this);
連接信號和槽connect(btn,&QPushButton::clicked,this,&QWidget::close);

自定義信號和槽
1:自定義信號
1.1:要寫在signals下
1.2:返回值爲void
1.3:只需要聲明,不需要實現
1.4:可以有參數,可以重載
2:自定義槽函數
2.1:寫在public slot下或者public下或者是全局函數
2.2:返回值爲void
2.3需要聲明,也需要實現
2.4:可以有參數,也可以重載
3:可以用emit觸發自定義信號

當自定義信號和槽函數出現重載時
1:需要利用函數指針,來指向正確的函數地址
例如 void(Teacher::*tSignal)(QString) = &Teacher::hungry;
2:用qDebug輸出時,如果輸出的是QString類型,會自帶" ",不想要雙引號時可以將QString類型轉爲char *
2.1:先用.toutf8()轉爲QByteArray
2.2:再用.data()轉爲char *
3:信號可以連接信號
4:斷開信號函數爲disconnect

注:Qt4版本信號槽連接函數寫法
connect(信號的發送者,發送的信號 SIGNAL(信號),信號的接收者,槽函數SLOT(槽函數))
優點:參數直觀
缺點:編譯器不會檢測參數類型

發佈了45 篇原創文章 · 獲贊 39 · 訪問量 3191
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章