最近學習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"; }