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


  • 相关阅读:
    #跟着教程学# 6、maya/python window命令
    element 中MessageBox的封装
    vue中XLSX解析excel文件
    git工作区-暂存区
    GIT相关
    弹窗-二维码生成与下载
    输入框限定100个汉字或200字符
    深浅拷贝(详细)
    日期选择器选取时间范围(非空以及初始时间不能在当天以前)
    多选
  • 原文地址:https://www.cnblogs.com/DreamDog/p/9159970.html
Copyright © 2011-2022 走看看