自定義槽函數
1) 點擊按鈕b1,使得b2按鈕的文本內容更改:
QPushButton里沒有對應的槽函數。理論上應該將自定義的槽函數寫到b2
對應的button類里,但看起來不行。換一種思路,b1發出信號讓另一個對象接受,然后更改b2的文本內容。考慮MainWidget,可以訪問到b1, b2的對象。
故connect函數可以這么寫:connect(b1, &QPushButton::released, this, f( ) )
其中f就是自定義的槽函數。
2) 自定義的槽函數:
- 槽函數在QT5可以是任意類成員函數,全局函數,靜態函數,lambda表達式。一般都是定義為類的成員函數。
- 槽函數需要與信號對應(返回值,參數)。
- 信號沒有返回值,槽函數有返回值:void
- void mysig(int, double, QString);
void myslot(int, double, QString);一一對應
這樣定義主要是為了接受信號傳過來的數據。
信號的參數可以多於槽函數的參數,但反過來不行。
5.槽函數可以重載。
eg:
connect(&b1, &QPushButton::released, this, &Widget::slotMainWidget );
this就是主窗體的指針,Widget::slotMainWidget是成員函數,負責修改b2按鈕的Text。因為b2是在窗體內的,因此可以直接訪問。