问题标签 [qsystemtrayicon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
491 浏览

c++ - QSystemTrayIcon 在 Qt5 中没有上下文菜单可能吗?

我是QSystemTrayIcon第一次使用,实施起来很简单。我的代码如下所示:

正如您可能从我的代码中理解的那样,我不想显示上下文菜单,我只想要托盘中的一个按钮,单击该按钮会显示我的应用程序窗口。

然而,代码有点工作,即使我指定了一个“nullptr”上下文菜单,每当我点击它时,我的托盘图标下仍然会出现一个看起来很奇怪的框,就好像有一个没有任何项目的上下文菜单一样(请看下面的截图)。

QSystemTrayIcon 下奇怪的框

所以我的问题是:

  • 难道我做错了什么?
  • 我怎样才能让奇怪的盒子消失?
  • 这是一个错误,还是我平台上 Qt 的一个特性?

PS:我正在为Ubuntu 16.04 amd64开发这段代码,但我认为这个问题的答案应该与任何平台相关。

注意:我也尝试过忽略 setContextMenu() 调用而不是使用 调用它nullptr,但这也不起作用。结果完全一样。

欢迎任何输入,

谢谢!

0 投票
2 回答
2975 浏览

python - PyQT5 QSystemTrayIcon激活信号不起作用

在 PyQT5 程序中单击系统托盘图标时,我正在尝试打印文本。我尝试将 PyQT5 QSystemTrayIcon 激活信号(单击系统托盘图标时发出)连接到自定义方法,但未调用该方法。这是一个简单的例子:

例如,有 3 种将信号连接到插槽的方法(其中两种已注释)。我尝试了使用有无装饰器@pyqtSlot() 的方法。连接不会引发错误。甚至信号接收器的印刷品都说它连接到 1 个插槽。但是,单击系统托盘图标时它什么也不做。

问题:是信号连接不正确,还是根本没有发出信号?

系统:Ubuntu 16.04,PyQT5.8。但是,也应该在其他系统上工作,因为 PyQT 是多平台的。PS:我已经阅读了官方的 PyQT5 信号/插槽文档和许多关于堆栈溢出的相关问题,但没有发现同样的问题。我认为最接近的可能是 C++,但不适用于 python。任何提示将不胜感激。非常感谢!编辑:修正文本中的错别字

0 投票
0 回答
82 浏览

c++ - QSystemTrayIcon 不断创建新图标

我创建了一个通知系统,它使用 QSystemTrayIcon 来提醒用户。我的问题是,每次用户收到通知时,它都会创建一个新图标,因此系统托盘最终会充满这些图标。

我在 Linux 机器上开发程序,这里没有出现问题。但是,我在 Windows 7 上构建程序,这是程序实际使用的地方和问题出现的地方。这使测试对我来说很棘手,因为我必须经过相当长的过程才能在 Windows 上运行该程序。所以我有点希望有人能发现问题并告诉我到底出了什么问题,但我很感激任何意见,所以如果你有任何想法,请告诉我。

我的代码:

此代码位于函数内的 if 语句中,该函数每 5 秒调用一次以检查新通知。

猜测我会说这可能是因为每次出现通知时都会生成一个新的 SystemTrayIcon 但我不是 100% 我希望任何人都可以确认这一点以使我免于经历一个糟糕的测试过程在 Windows 上。

谢谢你的帮助!

0 投票
1 回答
1978 浏览

python - QSystemTrayIcon.setIcon 无法更改托盘图标

我可以让初始图标设置得很好,我可以通过为应用程序创建 2 个图标然后执行 self.trayIcon.hide() 和 self.newicon.show() 来解决这个问题,但我不觉得这是正确的方法。

Pycharm 显示一条通知,上面写着“预期的 QSystemTrayIcon,得到了 QIcon”,但如果我与之交换QIconQSystemTrayIcon它会说Qicon丢失。SOOOOOO 我把它改成QSystemTrayIcon(QIcon("icons\python.ico")它仍然说QIcon是未填充的。似乎问题检测正在循环中。

当我运行 swapicon 函数时,按原样运行代码会给我“setIcon (self, QIcon):未绑定方法的第一个参数必须具有类型‘QSystemTrayIcon’”。如果我删除 QIcon 所以它只是 setIcon (file) 然后我得到“setIcon (self, QIcon): not enough arguments”

0 投票
1 回答
1262 浏览

python - 从托盘图标弹出窗口,当窗口关闭时不会关闭程序

设置一个从托盘图标启动不同应用程序的工具包,我需要能够打开配置窗口,然后在不关闭整个应用程序的情况下关闭它。

我假设它关闭了整个应用程序,因为我的弹出窗口是Qmainwindow(),但我发现的唯一其他弹出类型窗口是自动填充字段的对话框窗口。也许我需要在托盘图标启动时启动主窗口,然后隐藏()主窗口?然后以它作为父级启动弹出窗口?

最终目标:我想从托盘图标中选择选项并获取包含我配置信息的窗口。当有人在这些窗口之一中单击“确定”、“保存”、“取消”等或单击 XI 时,不希望它退出应用程序并删除托盘图标。

0 投票
1 回答
978 浏览

python - 如何用 QSystemTrayIcon 区分左击和右击

问题

在 MacOS (Sierra 10.12.6) 上运行以下 PyQt5 代码时

即使右键单击我们也会得到激活原因 QSystemTrayIcon::Trigger

在其他系统(例如 XFCE)上,QSystemTrayIcon::Context当用户右键单击时我们会得到

问题

我们如何区分 MacOS 系统托盘图标的左键单击和右键单击?

0 投票
0 回答
93 浏览

qt - QSystemTrayIcon透明背景中的垃圾像素

我正在尝试使用 Qt 5.10.0 制作系统托盘图标。该图标将是非矩形的(实际上是文本)。我当前的代码在 KDE Plasma 面板上正常工作,但在 XFCE4 面板上,只要图标的像素是透明的,它的背景就会出现垃圾。垃圾通常代表系统托盘中一些已经存在的图标的碎片,但有时还有一些其他窗口的碎片。

几乎所有其他应用程序的图标看起来都很干净,包括基于 Qt 的应用程序,如 QBittorrent、Klipper、KTorrent,以及基于 GTK 的 (Pidgin)。唯一的例外是 Dropbox 和我的代码。显着的区别是我的代码和 Dropbox 都是基于 Qt5 的,而上面提到的看起来正确的 Qt 应用程序是基于 Qt4 的。为 Qt4 编译我的代码确实没有显示问题。

下面是代码。我在这里做错了什么?

0 投票
1 回答
363 浏览

qt - QSystemTrayIcon 不返回任何几何信息

我在 Unity 桌面上使用 Ubuntu (17.04)。我无法获得 QSystemTrayIcon 的任何几何信息:

这将打印出以下内容:

一切都归零,不可能是正确的。

0 投票
2 回答
1860 浏览

python - QSystemTrayIcon 未显示

使用 Kubuntu 18.04 (qt5 5.9.5)、Python 3.6。我无法让此代码显示托盘图标;显示了 Dropbox 等其他图标,但这不是:

显示了消息(“hoge”,“moge”),但我在任何地方都找不到图标......正如其他帖子所说,左上角也没有。

0 投票
1 回答
1507 浏览

python - PyQt5: how do I launch a window from a system tray icon context menu?

I have two separate files, one that creates a system tray icon and context menu, and another a window to take user input.

traywindow.py contains this:

Which produces:

enter image description here

trayapp.py contains this:

Which produces:

Window

I want to launch the window from my context menu, so when I click on Preferences... it will open the Set Account window, and when I fill in the field and click on OK, capture that into variables/pass those along as arguments in the trayapp.py file. Currently, my attempt in the code above gives me this when I click on Preferences...:

I'm new to PyQt5 and feel like I'm missing something fundamental. From the error I think it's to do with how each file is called at the end to produce its UI, but I haven't found an answer in the docs so far.