在 Qt 中,信号与槽(Signals and Slots) 是一种用于对象之间通信的机制。它是 Qt 的核心特性之一,允许对象在特定事件发生时通知其他对象,并执行相应的操作。信号与槽机制是 Qt 实现事件驱动编程的基础。
1. 信号与槽的基本概念
1.1 信号(Signal)
- 信号是对象在特定事件发生时发出的通知。
- 例如,按钮被点击时会发出
clicked()
信号。 - 信号是类的成员函数,但不需要实现,只需要声明。
1.2 槽(Slot)
- 槽是用于处理信号的函数。
- 槽可以是类的普通成员函数,也可以是
QObject
的成员函数。 - 槽可以连接到信号,当信号发出时,槽会被自动调用。
1.3 连接(Connection)
- 信号与槽通过
connect
函数连接。 - 当信号发出时,所有连接到该信号的槽都会被调用。
2. 信号与槽的语法
2.1 信号的声明
信号通过 Q_SIGNALS
或 signals
关键字声明。
class MyClass : public QObject {
Q_OBJECT
signals:
void mySignal(); // 声明一个信号
void mySignalWithArgs(int value, const QString &text); // 带参数的信号
};
2.2 槽的声明
槽通过&nb