在Mac上启动没有停靠栏图标的Qt托盘进程

问题描述 投票:1回答:1

我有一个包含GUI,服务和托盘的捆绑包。请注意,它们是三个独立的过程

这可能听起来很奇怪,托盘是服务的代表,用户可以打开GUI,如果没有退出,将创建一个托盘。

所以在我的GUI代码中,我有类似下面的内容:

QProcess::startDetached("my-tray");

整个捆绑包配置为GUI是主要可执行文件。

问题是:当GUI启动托盘时,我可以在Dock中看到两个图标。我想要的是在托盘中没有任何额外图标的情况下启动托盘。

我已经尝试将QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM设置为true,如建议的here

我试图按照建议的here以编程方式更改激活策略。

我认为在plist文件中将LSUIElement设置为1对我来说是一个有效的解决方案,因为我仍然希望GUI在Dock中显示一个图标。

目前,我将所有进程放在捆绑包中的MacOS文件夹中。将托盘移动到Resources文件夹导致它无法加载一些可可库。

此应用程序无法启动,因为它无法在“”中找到或加载Qt平台插件“cocoa”。

整个项目是一个用C ++编写的Qt项目。托盘进程本质上是一个QSystemTrayIcon。

c++ macos qt tray
1个回答
1
投票

问题是:当GUI启动托盘时,我可以在Dock中看到两个图标。

一种可能的解决方案是使“托盘”进程成为自己的应用程序包(并且仍然放在主应用程序的包中)并进行设置

<key>NSUIElement</key>
<string>1</string>

在托盘捆绑的Info.plist

© www.soinside.com 2019 - 2024. All rights reserved.