QSystemTrayIcon在4.8 -如何删除这个东西

QSystemTrayIcon in 4.8 - how to delete this thing?

本文关键字:删除 何删除 QSystemTrayIcon      更新时间:2023-10-16

正如标题所说,这是什么,我如何处理它?

它是QObject,请求QObject作为它的父结点。但同时它的子对象显然是QWidgets

通常对于QObject s,您可以在删除父节点时让父节点删除它,或者您可以自己删除它。但是QSystemTrayIcon似乎不这样工作-我试过使它成为任意QObject的子对象,然后让它的父对象删除它-当我这样做时,一个挥之不去的事件被发送到已被父对象删除的QSystemTrayIcon。在OSX上,这个分段错误是因为它最终向无效对象发送了一个obj消息。

这可能是因为QMainWindow在我的应用程序中同时消失了。

如果我必须在取消子节点后显式地删除它,为什么?如果是这样的话,这听起来像是时间相关的。

如果QSystemTrayIcon真的只是想要一个QWidget作为它的父节点,为什么它的构造函数不是这样写的?

以下方法有效:

  • 子类QApplication
  • 让QSystemTrayIcon实例成为app实例的子实例,如果你想
  • 创建自定义应用析构函数,首先删除托盘

托盘内部使用QWidget,当QApplication实例已经被销毁时,它的删除工作不正确。

就这些

trayIcon->setVisible(false);
exit(0);