Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 与信号相关的对象的生存时间_C++_Qt - Fatal编程技术网

C++ 与信号相关的对象的生存时间

C++ 与信号相关的对象的生存时间,c++,qt,C++,Qt,这是我的qt-connect语句示例 connect(pHttpFetch, SIGNAL(Fetched(QByteArray)), this, SLOT(PrintData(QByteArray))); 这里,第一个对象的信号连接到调用(进行连接调用)对象的插槽 我有以下几件事 第一个对象是本地对象。当控件超出范围时,对象将被终止 调用对象将在整个应用程序内存中保留在内存中 因为我不需要第一个对象,所以可以将其设置为本地对象吗?(我假设Qt神奇地将对象保存在内存中) 我应该创建一个共享

这是我的qt-connect语句示例

connect(pHttpFetch, SIGNAL(Fetched(QByteArray)), this, SLOT(PrintData(QByteArray)));
这里,第一个对象的信号连接到调用(进行连接调用)对象的插槽

我有以下几件事

  • 第一个对象是本地对象。当控件超出范围时,对象将被终止
  • 调用对象将在整个应用程序内存中保留在内存中
因为我不需要第一个对象,所以可以将其设置为本地对象吗?(我假设Qt神奇地将对象保存在内存中)

我应该创建一个共享指针来保存对象吗。将在不需要时销毁对象?

根据Qt

自动断开与对象之间的所有信号连接,并从事件队列中删除对象的所有挂起的已发布事件

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

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