1.Qt中信號和槽
1.1 需求:點擊按鈕關閉窗口
1.2 利用connect進行鏈接
1.3 參數1 信號發送者(指針) 參數2 發送的信號(信號地址) 參數3 信號的接受者(指針) 參數4 處理槽函數(槽函數地址)
1.4 connect(btn,&QPushButton::clicked,this,&Widget::close);
1.5 優點:松散與耦合;將不相關的兩個內容鏈接到一起。
2. 自定義信號和槽
2.1 需求:
/*
* Teacher 類 Student 類
* ClassIsOver 下課,老師發送自定義信號, 餓了
* 學生 響應餓了的信號, 並且 請老師吃飯
*/
2.2 自定義信號寫法
//自定義信號 寫到singles 下
// 自定義信號寫法:
//1、返回void
//2、信號只需要聲明,不需要實現
//3、自定義信號可以發生重載(即可以有參數);
2.3 自定義槽函數
//自定義槽函數 寫到public slots下,或者全局函數,或者public下,或者是lambda表達式
//1、返回void
//2、需要聲明,也需要實現
//3、也可以發生重載
2.4 觸發自定義信號 emit 自定義信號
2.5鏈接這里就不再陳述了;
2.6 當自定義信號和槽函數發生了重載之后,需要利用函數指針,明確指出函數地址
2.7拓展
2.7.1 信號可以連接信號
2.7.2 一個信號可以連接多個槽函數
2.7.3 多個信號可以連接一個槽函數
2.7.4 信號和槽的參數類型,必須一一對應
2.7.5 信號的參數個數 可以多於槽函數的個數,但是類型也要一一對應
2.7.6 信號和槽是可以斷開連接的disconnect
2.8 Qt4版本的信號和槽的寫法
2.8.1 優點:參數直觀
2.8.2 缺點:參數類型不做檢測
2.8.3 connect (zt,SIGNAL(hungry(QString)),st,SLOT(treat(QString)));
3. lambda 表達式
3.1 常使用: [=](){}
3.2 加上mutable修飾符后,可以修改按值傳遞進來的拷貝(注意是能修改拷貝,而不是值本身)
3.3 返回值 n = []()->int {return 10000}{};
3.4 CONFIG += c++11 QT4版本前的低版本使用lambda表達式必須要加入的一行配置信息