我有一个包含 GUI、服务和托盘的捆绑包。请注意,它们是三个独立的过程。
这可能听起来很奇怪,托盘是服务的代表,用户可以打开 GUI,如果没有托盘存在,它会创建一个托盘。
所以在我的 GUI 代码中我有如下内容:
QProcess::startDetached("my-tray");
整个捆绑包配置为 GUI 是主要可执行文件。
问题是:当 GUI 启动托盘时,我可以在扩展坞中看到两个图标。我想要的是启动托盘,而坞站中没有任何额外的图标。
我尝试按照建议将 QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM 设置为 truehere https://bugreports.qt.io/browse/QTBUG-29197.
我尝试按照建议以编程方式更改激活策略here https://stackoverflow.com/questions/6796028/start-a-gui-process-in-mac-os-x-without-dock-icon/9220840.
我不认为在 plist 文件中将 LSUIElement 设置为 1 对我来说是有效的解决方案,因为我仍然希望 GUI 在扩展坞中显示一个图标。
目前,我将所有进程都放在捆绑包内的 MacOS 文件夹中。将托盘移至 Resources 文件夹导致无法加载某些可可库。
该应用程序无法启动,因为它无法找到或加载
Qt平台插件“cocoa”中的“”。
整个项目是一个用C++编写的Qt项目。托盘进程本质上是一个QSystemTrayIcon。
问题是:当 GUI 启动托盘时,我可以在扩展坞中看到两个图标。
一种可能的解决方案是让“托盘”进程拥有自己的应用程序包(并且仍然放在主应用程序的包中)并设置
<key>NSUIElement</key>
<string>1</string>
in the Info.plist
托盘束。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)