与信号相关的物体的寿命

时间:2013-06-07 09:55:08

标签: c++ qt

这是我的示例qt connect语句

connect(pHttpFetch, SIGNAL(Fetched(QByteArray)), this, SLOT(PrintData(QByteArray)));

这里第一个对象的信号连接到调用(它产生连接调用)对象的槽。

我有以下事项

  • 第一个对象是本地对象。当控件超出范围时,该对象将被终止。
  • 调用对象将在整个应用程序内存中保留在内存中。

由于我不需要第一个对象,可以将它作为本地对象吗? (我假设Qt神奇地将对象保留在内存中)

我应该创建一个共享指针来保存对象。在不需要时会破坏物体吗?

1 个答案:

答案 0 :(得分:3)

根据Qt documentation

  

自动断开与对象之间的所有信号,并从事件队列中删除对象的所有待处理发布事件。

不,Qt并没有“神奇地”将对象保留在内存中。

不再存在的对象无法发送信号。您应该为此对象分配内存并保留对它的引用。请记住,如果您将QObject作为父母,那么此父母将自动处理其子女的删除(但如果您不提供父母,则必须手动删除它或使用{{3 } QObject的广告位