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";
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM