qt shared_ptr如何连接信号和槽
时间: 2024-02-27 12:49:23 浏览: 152
在Qt中,可以使用`connect`函数将信号和槽连接起来。对于使用`std::shared_ptr`的情况,需要使用`get()`方法获取原始指针来连接信号和槽。
下面是一个示例代码,演示了如何使用`std::shared_ptr`连接信号和槽:
```cpp
#include <QObject>
#include <QDebug>
#include <memory>
class MyObject : public QObject
{
Q_OBJECT
public slots:
void mySlot()
{
qDebug() << "Slot called";
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::shared_ptr<MyObject> obj = std::make_shared<MyObject>();
QObject::connect(obj.get(), &MyObject::mySignal, obj.get(), &MyObject::mySlot);
emit obj->mySignal(); // 触发信号,槽函数会被调用
return a.exec();
}
```
在上面的代码中,我们创建了一个`MyObject`类,它继承自`QObject`。然后,我们使用`std::shared_ptr`创建了一个`MyObject`对象`obj`。接下来,我们使用`connect`函数将`obj`的`mySignal`信号与`obj`的`mySlot`槽函数连接起来。最后,我们通过`emit`关键字触发`mySignal`信号,槽函数`mySlot`会被调用。
需要注意的是,在连接信号和槽时,需要使用`get()`方法获取`std::shared_ptr`的原始指针来进行连接。
阅读全文