3

这是我的示例 qt 连接语句

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

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

我有以下几点

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

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

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

4

1 回答 1

4

根据 Qt文档

进出对象的所有信号都会自动断开,并且对象的任何未决已发布事件都将从事件队列中删除。

不,Qt 不会“神奇地”将对象保存在内存中。

不再存在的对象无法发送信号。您应该为此对象分配内存并保留对它的引用。请记住,如果你给了你QObject的父母,那么这个父母将自动处理他们孩子的删除(但如果你不提供父母,你必须手动删除它或使用deleteLater()插槽QObject

于 2013-06-07T10:06:03.923 回答