Qt 自定义信号与槽:详细教程及示例
在 Qt 中,自定义信号和槽可以通过以下步骤实现:
- 在类定义中声明信号和槽函数,例如:
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass(QObject *parent = nullptr);
signals:
void mySignal(int value);
public slots:
void mySlot(int value);
};
- 在实现文件中实现信号和槽函数,例如:
MyClass::MyClass(QObject *parent)
: QObject(parent)
{
}
void MyClass::mySlot(int value)
{
qDebug() << 'mySlot triggered with value: ' << value;
emit mySignal(value * 2);
}
- 在需要使用信号和槽的地方连接它们,例如:
MyClass *obj = new MyClass(this);
connect(obj, &MyClass::mySignal, [this](int value) {
qDebug() << 'mySignal triggered with value: ' << value;
});
connect(this, &SomeClass::someSignal, obj, &MyClass::mySlot);
在第一个 connect 中,我们将 MyClass 的 mySignal 信号连接到一个 lambda 表达式,当 mySignal 触发时,lambda 表达式会被调用。
在第二个 connect 中,我们将 SomeClass 的 someSignal 信号连接到 MyClass 的 mySlot 槽函数,当 someSignal 触发时,mySlot 会被调用。
需要注意的是,在类定义中声明信号和槽函数时,需要在类定义的开头添加 Q_OBJECT 宏,以启用元对象系统的支持。
原文地址: https://www.cveoy.top/t/topic/mYU6 著作权归作者所有。请勿转载和采集!