Qt 5 最新訊號和槽連線方式以及Lambda表示式
阿新 • • 發佈:2019-01-25
最近學習Qt,發現新大陸,這裡做下記錄。
主要內容就是原始Qt4的訊號槽連線方式,以及Qt5新版的連線方式,還有件事簡單演示一下lambda表示式的使用方式
程式碼如下
/* * 作者:張建偉 * 時間:2018年4月1日 * 簡述:該Demo僅僅用於測試和演示Qt5與Qt4的連線方式以及最新的槽函式支援lambda表示式 */ #include "widget.h" #include "ui_widget.h" #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); // 傳統Qt是連線方式 // 傳統Qt4連線方式為 訊號傳送者,訊號,訊號接受者,處理函式 QObject::connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(qT4_slot())); //Qt5連線方式 //其實這麼寫的方式和Qt4沒有啥卻別,只是在Qt4 中引用了訊號槽,在簡單的使用時沒有問題,但是在龐大的工程中,訊號和曹 僅僅是巨集替換,在編譯的時候沒有安全監測 //Qt5的新方法,在編譯的時候就會有監測,如果我們手誤操作失誤,就會出現問題 QObject::connect(ui->pushButton_2,&QPushButton::clicked,this,&Widget::qT5_slot); //Qt5 Lambda表示式 //這裡需要注意 Lambda表示式是C++ 11 的內容,所以,需要再Pro專案檔案中加入 CONFIG += C++ 11 QObject::connect(ui->pushButton_3,&QPushButton::clicked,[=](){qDebug()<<"lambda 表示式";}); } Widget::~Widget() { delete ui; } void Widget::qT4_slot() { qDebug()<< "This is Qt 4 Connect method"; } void Widget::qT5_slot() { qDebug()<< "This is Qt 5 Connect method"; }