应用程序停止后Qt关闭托盘图标

Posted

技术标签:

【中文标题】应用程序停止后Qt关闭托盘图标【英文标题】:Qt closing tray icon after application stops 【发布时间】:2011-03-27 12:26:25 【问题描述】:

Windows 下的托盘图标有点问题。在我的 Qt 应用程序停止(正常退出)后,图标仍保留在系统栏中。只有当我将鼠标光标移到它上面时它才会消失。我试图将它隐藏在我的窗口的析构函数中,但它失败了:我试过.setVisible(false)

有什么想法吗?谢谢。

附:我记得我在使用 SWT/Java 时遇到过同样的问题。

【问题讨论】:

你为什么要调用setVisible(false) 而不是仅仅销毁小部件? 如何退出应用程序? @David:我使用了 setVisible(false) 因为这个函数会导致托盘图标消失。 AFAIK qt 无论如何都会破坏小部件。我试图用删除操作符销毁 traicon。 @atamanroman:正常退出。我按下窗口标题中的 [x] 按钮。 【参考方案1】:

我不会将它隐藏在析构函数中。那时它可能是一个无效的参考。我会把它放在你的“退出”事件发生的地方。

【讨论】:

好主意 :) 我重新实现 closeEvent 成员函数并调用 setVisible(false) 在退出前隐藏图标。【参考方案2】:

如果您无法从析构函数中调用它,您可以将QCoreApplication::aboutToQuit() 信号连接到QSystemTrayIcon::hide() 插槽。

【讨论】:

以上是关于应用程序停止后Qt关闭托盘图标的主要内容,如果未能解决你的问题,请参考以下文章

Qt设置系统托盘图标和程序图标

OSX 上的 QT:托盘图标 - 图标 Dock 问题

Qt5 (Linux/LXDE) 中不显示系统托盘图标

WPF 在关闭程序了之后,托盘图标依然存在,请问怎么解决?

centos7.9下Qt 实现系统托盘,托盘菜单,托盘消息

QT之Qml使用QSystemTrayIcon实现系统托盘