我正在编写一个C ++ Qt桌面应用程序。
是否有可能在Qt中显示Skype =,如果没有创建托盘图标?
我发现的所有通知参考都需要托盘图标,我不想创建。
通知应显示应用程序何时打开以及何时最小化。
答案 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()
是的,我潜伏多年后才注册了一个帐户,只是为了发布此帖子: :)