zoukankan      html  css  js  c++  java
  • 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";
    }
    


  • 相关阅读:
    sourceTree免密码校验
    elasticsearch 服务安全配置
    qconf 介绍
    解决mysql不能远程登录的问题
    从git上下载代码并导入eclipse
    MAVEN 工程打包resources目录外的更多资源文件
    也谈BIO | NIO | AIO (Java版--转)
    web.xml 配置中classpath: 与classpath*:的区别
    Java @override报错的解决方法
    maven上传自定义jar到本地仓库
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9159970.html
Copyright © 2011-2022 走看看