Qt - 没有托盘图标的通知,可能吗?

时间:2012-07-12 11:08:46

标签: c++ windows qt notifications

我正在编写一个C ++ Qt桌面应用程序。

是否有可能在Qt中显示Skype =,如果没有创建托盘图标?

我发现的所有通知参考都需要托盘图标,我不想创建。

通知应显示应用程序何时打开以及何时最小化。

4 个答案:

答案 0 :(得分:8)

更新:似乎这不适用于最新版本的Qt。在创建QSystemTrayIcon后,我发现这项工作的解决方法是:

  • 致电show()
  • 使用showMessage
  • 显示所需的讯息
  • 致电hide()

这对我来说没问题。


创建QSystemTrayIcon但从不在其上调用show()。然后,您可以使用QSystemTrayIcon::showMessage显示弹出窗口。

答案 1 :(得分:1)

只需创建弹出类并在桌面上的某个位置显示它,并始终在顶部标记。通知也可以是小部件

答案 2 :(得分:1)

有点晚了,但你可能对这个图书馆感兴趣 https://github.com/Snorenotify/Snorenotify/

  

Snorenotify是一个多平台Qt通知框架。使用插件系统,可以在Windows,Unix和Mac上使用许多不同的通知系统创建通知。

答案 3 :(得分:1)

遇到了与OP类似的问题(但使用Python !!),Romario的回答使我无法达到想要的目标。

在我的场景中,我有一个系统托盘工具,在该工具中,我仅通过lockfile强制执行一个还活着的任务。但是,用户反馈要求如果他们在已打开的情况下尝试启动,我会提供某种反馈。

我在Windows上发现的内容-Romarios的答案将导致图标保留在系统托盘中-如果在setVisible(False)之前调用show(),则将防止图标出现/累积在系统托盘中:)

我的完整样本是

class SimpleNotifier(QtWidgets.QWidget):

    def notify_running(self):
        tray_icon = QtGui.QIcon(Params.TRAY_ICON)
        self.setIcon(tray_icon)
        self.setVisible(False)
        self.show()
        self.showMessage("Hi User", "Application already inside your sys-tray", QtGui.QIcon(Params.TRAY_ICON))

def notify():
    app = QtWidgets.QApplication(sys.argv)
    notify = HUBController.SimpleNotifier()
    notify.notify_running()
    app.exit()

notify()
    

是的,我潜伏多年后才注册了一个帐户,只是为了发布此帖子: :)