文章目錄
- 概述
- 用系統生成
- 新增一個信號量和槽
- 代碼方式
- 信號量和槽的宏
- 信號量和槽都用函數地址
- lamda表達式
- 函數指針
- 槽和信號量函數
- 信號量
- 槽
- 小結
概述
這個內容是QT獨有的,寫的挺有意義的。之前寫過一篇QT slots的函數,思來想去,覺得不是那么有趣。就決定要重新寫一篇文章來聊下。
先說下槽和信號量。
用系統生成
如下圖所示:
選中一個qpushbutton,然后右鍵轉到槽,
選中clicked函數,如下圖:
自己生成了一個函數在cpp文件中。
新增一個信號量和槽
如下圖所示:
在這個地方可以新增一個信號量和槽,然后選中發送者,接收者,信號,槽就可以了。
代碼方式
信號量和槽的宏
信號量和槽都用函數地址
connect(ui->pushButton_3, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked0);
lamda表達式
connect(ui->pushButton_3, &QPushButton::clicked, this, [=](){printf("lamda 0\n");});
再看一個,如下:
connect(ui->pushButton_4, &QPushButton::clicked, this, [=](){emit customSlot();});
connect(this, &MainWindow::sig_push_btn4, this, &MainWindow::customSlot);
這個是自定義了槽和信號量。
函數指針
void (MainWindow::*CustomSlot7)() = &MainWindow::customSlot1;
connect(ui->pushButton_5, &QPushButton::clicked, this, CustomSlot7);
這個是函數指針的調用。
槽和信號量函數
信號量
信號量只用聲明就可以了。
槽
槽函數聲明,實現都要有。
小結
這篇主要寫了qt槽函數的幾種調用方式,涉及到發送者,接收者,槽,信號量。這種方式有點像設計模式的觀察者模式,感興趣可以參考之前的文章觀察者設計模式。至于qt的調用,再加上c++自有的可調用對象(可以參考C++可調用對象),就有多種使用方式了。感興趣一起學習學習,可以一起。OK,翻篇。