8

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

是否可以在 Qt 中显示 Skype=like 通知,而不创建托盘图标?

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

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

4

4 回答 4

9

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

  • 称呼show()
  • 显示所需的消息showMessage
  • 称呼hide()

这对我来说没问题。


创建一个QSystemTrayIcon但从不调用show()它。然后您可以使用QSystemTrayIcon::showMessage来显示您的弹出窗口。

于 2012-07-12T12:13:36.160 回答
2

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

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

于 2014-12-12T00:17:33.727 回答
2

只需创建弹出类并将其显示在桌面上的某个位置,并始终位于顶部标志。通知也可能是一个小部件

于 2012-07-12T11:16:02.277 回答
1

与 OP 有类似的问题(但使用 Python !!),罗马里奥的回答让我达到了我想要的一半。

在我的场景中,我有一个系统托盘工具,我通过锁文件强制只有一个活着。但是,用户反馈要求,如果他们尝试在已经打开的情况下启动,我会提供某种反馈。

我发现的是在 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()
    

是的,我在潜伏多年后确实注册了一个帐户,只是为了发表这篇文章::)

于 2020-10-20T13:00:18.757 回答