使sniqt识别所有托盘的能力(或在Qt中创建一个工作指示器)

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

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

问题是它没有做一个非常体面的转换。 单击,中键单击等操作不起作用,而它们在支持托盘图标的系统中也可以。

有没有办法让这些行动回来? 我可以使用QSystemTray图标,并且在Ubuntu中仍然有这些有趣的(在我的场合非常有用)动作吗?

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

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

似乎Qt不支持这个东西,至少在Ubuntu Unity上,即使它有一个’激活’的信号。 所以我建议你使用GTK和普通的trayicon,我认为没有替代Qt。 您可以联系Qt的开发人员以澄清此问题。

根据选择,Unity不支持你所说的“体面托盘图标”。 这是指标还是没有。 从那里你有几个选择:

  • 使用有限的指标function。 您可以使用标准QSystemTray.setContextMenu()方法设置指示器使用的菜单。

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

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

是否要使用选项1或2主要取决于您的应用程序的function。