qt自建类想要使用信号槽,怎么办,给出C++示例
时间: 2023-08-21 20:01:43 浏览: 52
使用信号槽是 Qt 框架中的重要特性之一,自建类也可以使用。下面是一个简单的示例:
```cpp
#include <QObject>
class MyObject : public QObject
{
Q_OBJECT // 必须添加 Q_OBJECT 宏
public:
explicit MyObject(QObject *parent = nullptr) : QObject(parent) {}
signals:
void mySignal(int value);
public slots:
void mySlot(int value)
{
qDebug() << "Received value from signal:" << value;
}
};
```
在上述示例中,我们定义了一个自建类 `MyObject`,它继承自 `QObject`,并且在类中添加了一个信号 `mySignal` 和一个槽函数 `mySlot`。需要注意的是,为了使用信号槽机制,必须在类定义中添加 `Q_OBJECT` 宏。
现在,我们可以在另一个类中使用 `MyObject` 类的信号槽了:
```cpp
MyObject *obj = new MyObject();
connect(obj, &MyObject::mySignal, obj, &MyObject::mySlot);
emit obj->mySignal(123);
```
在上述示例中,我们创建了一个 `MyObject` 对象 `obj`,并且将 `mySignal` 信号与 `mySlot` 槽函数连接起来(使用 `connect` 函数)。然后,我们通过 `emit` 关键字发射 `mySignal` 信号,并传递一个整数参数 123。
当 `mySignal` 信号被发射时,与之连接的 `mySlot` 槽函数将会被执行,并输出 `Received value from signal: 123`。