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_OBJECT
public:
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();
}