信号函数要求
- 类必须直接或间接继承
QOBJECT
- 必须是类成员
signals
关键字进行声明- 只需要声明不需要定义
发送信号
emit xxx
槽函数要求
- 类必须直接或间接继承
QOBJECT
- 返回值必须为void
slots
关键字进行声明- 槽函数参数与信号函数参数必须
一一对应
示例程序
1⃣️新建一个类继承自QObject
#ifndef QBUTTON_H
#define QBUTTON_H
#include <QObject>
#include <QString>
class QButton : public QObject
{
Q_OBJECT
public:
explicit QButton(QObject *parent = nullptr);
};
#endif // QBUTTON_H
2⃣️声明信号函数
#ifndef QBUTTON_H
#define QBUTTON_H
#include <QObject>
#include <QString>
class QButton : public QObject
{
Q_OBJECT
public:
explicit QButton(QObject *parent = nullptr);
signals:
void testSignal();
void testSignal(int);
void testSignal(QString);
};
#endif // QBUTTON_H
3⃣️声明槽函数
#ifndef QBUTTON_H
#define QBUTTON_H
#include <QObject>
#include <QString>
class QButton : public QObject
{
Q_OBJECT
public:
explicit QButton(QObject *parent = nullptr);
signals:
void testSignal();
};
#endif // QBUTTON_H
4⃣️实现槽函数
void QButton::testSlot()
{
qDebug()<<"no val";
}
5⃣️绑定信号与槽
// 创建一个实例
m_btn = new QButton();
connect(m_btn,&QButton::testSignal,this,&MainWindow::testSlot);
6⃣️发送信号
connect(ui->pushButton,&QPushButton::clicked,[this]{
emit m_btn->testSignal();
});