1. 程式人生 > >Qt 5 最新訊號和槽連線方式以及Lambda表示式

Qt 5 最新訊號和槽連線方式以及Lambda表示式

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