让 sniqt 识别所有托盘功能(或在 Qt 中创建工作指示器)

让 sniqt 识别所有托盘功能(或在 Qt 中创建工作指示器)

这是我的一个旧帖子:如何使用 Qt/C++ 创建工作指标?其中建议我使用 QSystemTray 库在 Ubuntu 中为我的应用程序制作托盘图标。

Sniqt 是一个负责处理其余工作的程序。众所周知,Ubuntu 已经摆脱了托盘图标。相反,它现在只使用指示器。Sniqt 将 Qt 托盘图标转换为工作指示器。

问题是它不能很好地完成转换。单击、中键单击等操作不起作用,而在支持托盘图标的系统中则起作用。

有没有办法恢复这些操作?我可以使用 QSystemTray 图标,并在 Ubuntu 中继续执行这些有趣的(并且非常有用的)操作吗?

我很高兴知道我之前谈到的另一个线程的答案(如何使用 GTK 库制作工作指示器并防止崩溃)。

Sniqt 错误链接:https://bugs.launchpad.net/sni-qt/+bug/1027652

答案1

Unity 不支持您所说的“像样的托盘图标”。要么有指示器,要么什么都没有。从那里您有几种选择:

  • 尽量利用有限的指示器功能。您可以使用标准 QSystemTray.setContextMenu() 方法设置指示器将使用的菜单。

  • 将您的应用从系统托盘中完全分离出来。例如,将其变成桌面上的浮动图标,它将能够接受中键和右键单击,正如 God 和 Matthias Ettrich 所希望的那样。您可以在此处找到有关如何执行此操作的简单示例:http://kde-apps.org/content/show.php/KEyes?content=51493(可选,仅当您检测到您在 Unity 下运行时才执行此操作,即如果 $DESKTOP_SESSION 设置为“ubuntu”。)

  • 声明不支持 Unity。这不是一个好的选择。

是否选择选项 1 还是 2 主要取决于您的应用程序的功能。

答案2

似乎 Qt 不支持这个功能,至少在 Ubuntu Unity 上不支持,即使它有一个“已激活”信号。因此我建议您使用 GTK 和普通托盘图标,我认为 Qt 没有其他选择。您可以联系 Qt 的开发人员来澄清这一点。

相关内容