信号与槽对于lambda的支持

来源:互联网 发布:宝利通软件 编辑:程序博客网 时间:2024/06/05 15:19

widget.h

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDebug>////全局函数//void globalFun(QString title)//{//    qDebug() << "globalFun: " << title;//}namespace Ui {class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();    //内部函数    void memberFun(QString title);private:    Ui::Widget *ui;signals:    //自定义信号    void customSignal(QString);};#endif // WIDGET_H

widget.cpp

#include "widget.h"#include "ui_widget.h"//全局函数void globalFun(QString title){    qDebug() << "globalFun: " << title;}Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);    //1. 全局函数    connect( this, &Widget::windowTitleChanged, globalFun);//    connect( this, &Widget::windowTitleChanged, &globalFun);    //2. 成员函数(非槽函数)    connect( this, &Widget::windowTitleChanged, this, &Widget::memberFun);    //3. lambda函数//    connect( this, &Widget::windowTitleChanged, this, [](QString title)//    connect( this, &Widget::windowTitleChanged, [this](QString title)    connect( this, &Widget::windowTitleChanged, [](QString title)    {        qDebug() << "lambdaFun: " << title;    });    //自定义信号,参数需匹配    connect( this, &Widget::customSignal, this, &Widget::memberFun);}Widget::~Widget(){    delete ui;}void Widget::memberFun(QString title){    qDebug() << "memberFun: " << title;}

main.cpp

#include "widget.h"#include <QApplication>#include <iostream>#include <functional>int main(int argc, char *argv[]){    QApplication a(argc, argv);    Widget w;    w.show();//    w.setWindowTitle("test");    w.customSignal("test");    return a.exec();}
原创粉丝点击