【发布时间】:2014-05-09 01:00:42
【问题描述】:
正如标题所说,这是什么东西,我该如何处理?
这是一个QObject,并要求QObject 作为它的父级。但同时它的子对象显然是QWidgets。
通常使用QObjects,您可以在删除父级时让父级删除它,也可以自己删除它。但是QSystemTrayIcon 似乎并没有以这种方式工作-我尝试将其设为任意 QObject 的子级,然后让它的父级删除它-当我这样做时,一个挥之不去的事件被发送到已成为父级的 QSystemTrayIcon-删除。在 OSX 上,这会出现段错误,因为它最终会向无效对象发送 obj 消息。
这可能是因为 QMainWindow 在我的应用程序中同时消失了。
如果我必须在取消子节点后显式删除它,为什么?如果是这样的话,听起来这取决于时间或其他东西。
如果QSystemTrayIcon 真的只是想要一个QWidget 作为它的父级,为什么它的构造函数不是这样写的呢?
【问题讨论】:
-
您是否尝试使用
deleteLater()而不是delete?这应该有助于确保在删除QSystemTrayIcon之前传递所有适当的事件。
标签: c++ qt qwidget qmainwindow qobject