У меня есть комплект с графическим интерфейсом, сервисом и трей. Обратите внимание, что это три отдельных процесса.
Это может звучать странно, трей — это представление сервиса, и пользователи могут открыть графический интерфейс, который создаст трей, если ничего не выйдет.
Так что в моем коде GUI у меня есть что-то вроде ниже:
QProcess::startDetached("my-tray");
Весь пакет настроен, поскольку GUI является основным исполняемым файлом.
ПРОБЛЕМА ЕСТЬ: когда GUI запускает трей, я вижу две иконки в доке. То, что я хочу, это запуск лотка без каких-либо дополнительных значков в доке.
Я попытался установить для QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM значение true, как предложено Вот.
Я пытался изменить политику активации программно Вот.
Я не думаю, что установка LSUIElement на 1 в plist-файле — это правильное решение для меня, потому что я все еще хочу, чтобы графический интерфейс отображал значок в доке.
В настоящее время я помещаю все процессы в папку MacOS в комплекте. Перемещение лотка в папку ресурсов привело к тому, что не удалось загрузить некоторую библиотеку какао.
Не удалось запустить это приложение, так как не удалось найти или загрузить
Плагин платформы Qt «Какао» в «».
Весь проект является проектом Qt, написанным на C ++. Процесс в трее по сути является QSystemTrayIcon.
ПРОБЛЕМА ЕСТЬ: когда GUI запускает трей, я вижу две иконки в доке.
Одним из возможных решений было бы сделать так, чтобы «лоток» обрабатывал свой собственный пакет приложений (и все еще помещал в пакет основного приложения) и настраивал
<key>NSUIElement</key>
<string>1</string>
в Info.plist
из комплекта лотка.
Других решений пока нет …