4
关于Qt中的信号和插槽,delete和deleteLater如何工作?
有一个QNetworkReply类的对象。有一个插槽(在某些其他对象中)连接至其finish()信号。信号是同步的(默认信号)。只有一个线程。 在某个时刻,我想摆脱两个对象。没有更多信号或来自它们的任何东西。我希望他们走了。好吧,我想,我会用 delete obj1; delete obj2; 但是我真的可以吗?〜QObject的规范说: 在等待事件发送时删除QObject可能导致崩溃。 什么是“待处理事件”?这是否意味着在我打电话给我时delete,已经有一些“待处理事件”要传递,并且它们可能会导致崩溃,而我真的无法检查是否有任何事件? 假设我打电话给: obj1->deleteLater(); obj2->deleteLater(); 为了安全。 但是,我真的很安全吗?该deleteLater补充说,将在主回路控制时到达那里进行处理的事件。是否可以存在obj1或obj2已经存在一些未决事件(信号),在处理deleteLater之前在主循环中等待处理?那将是非常不幸的。我不想编写代码来检查“某些已删除”状态,而忽略所有插槽中的传入信号。
76
qt
qt-signals
slot