Qt的参考表示:QObject的模糊析构函数?为QObject的析构函数
所有信号并从该对象被自动断开,并且为对象任何未决发布事件从事件队列中删除。但是,使用deleteLater()而不是直接删除QObject子类通常更安全。
...
警告:删除一个QObject而未决的活动等待交付可以导致崩溃。如果QObject存在于与当前正在执行的线程不同的线程中,则不能直接删除它。使用deleteLater()代替,这将导致事件循环在所有未处理事件传递给它之后删除对象。
注意上面部分的粗线。
所以问题是:未决的发布事件是否从事件队列中删除?
谢谢,@TheDarkKnight。让我们稍微改写一下这个问题:如果QObject仅存在于一个线程中,那么调用delete可以安全地调用deleteLater吗? – agnor
这取决于您要删除对象的代码中的点。如果代码位于槽功能中,那么[你应该调用deleteLater](http://stackoverflow.com/questions/22376298/when-to-use-deletelater/22378104#22378104) – TheDarkKnight