我正在编写一个 C++ Qt 桌面应用程序。
是否可以在 Qt 中显示 Skype=like 通知,而不创建托盘图标?
我发现的所有通知参考都需要一个我不想创建的托盘图标。
通知应显示应用程序何时打开以及何时最小化。
我正在编写一个 C++ Qt 桌面应用程序。
是否可以在 Qt 中显示 Skype=like 通知,而不创建托盘图标?
我发现的所有通知参考都需要一个我不想创建的托盘图标。
通知应显示应用程序何时打开以及何时最小化。
更新:似乎这不适用于最新版本的 Qt。在创建 QSystemTrayIcon 之后,我发现一个解决方法是:
show()
showMessage
hide()
这对我来说没问题。
创建一个QSystemTrayIcon
但从不调用show()
它。然后您可以使用QSystemTrayIcon::showMessage
来显示您的弹出窗口。
有点晚了,但你可能对这个库感兴趣 https://github.com/Snorenotify/Snorenotify/
Snorenotify 是一个多平台的 Qt 通知框架。使用插件系统可以在 Windows、Unix 和 Mac 上使用许多不同的通知系统创建通知。
只需创建弹出类并将其显示在桌面上的某个位置,并始终位于顶部标志。通知也可能是一个小部件
与 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()
是的,我在潜伏多年后确实注册了一个帐户,只是为了发表这篇文章::)