Как открыть и свернуть внешнее приложение в системный трей в Qt - PullRequest
0 голосов
/ 06 апреля 2019

QProcess можно использовать для открытия внешней программы, но она всегда будет открывать приложение в передней части всех других окон.

Есть ли способ открыть внешнее приложение, а затем свернуть / скрыть это открытое приложение в системном трее?

QString path = QString("external app path here").replace("/", "\\");

QProcess process;
process.start(path); //open the external app, but it will stay on top of other windows 
if (process.isOpen()) {
    //then minimize this app to system tray;
}

Возможно ли это (open and minimize external app to system tray) с помощью методов Qt?

Если у Qt нет способа свернуть открытое внешнее приложение в системный трей. Нужно ли использовать Windows API? Любой совет или пример кода будут оценены.

1 Ответ

1 голос
/ 06 апреля 2019

Это не должно быть специфично для Qt. Возможно, Управление сессиями Qt может быть уместным.

Это вопрос оконного менеджера и окружения рабочего стола . Оба предоставляются (очень широко) вашей «операционной системой» и не привязаны к какому-либо конкретному процессу, использующему Qt.

Системный трей относится к среде рабочего стола. У определенного процесса, использующего Qt, нет причин минимизировать его. Минимизация системного трея - это бизнес среды рабочего стола (а не одного конкретного приложения Qt). Я не вижу причин, по которым ваше приложение могло бы сделать это (помните, что ваш пользователь мог также запускать другие приложения, которые для него даже важнее, чем ваши, и которые также взаимодействуют или требуют использования системного трея).

Конечно, Qt предоставляет API для взаимодействия с оконным менеджером и средой рабочего стола.

PS. В Linux соглашение между приложением Qt и оконным менеджером или средой рабочего стола задокументировано в EWMH и ICCCM. Вам нужно найти эквивалент для Windows. Я никогда не использовал Windows, поэтому я не знаю их. В Linux можно написать оконный менеджер, используя Qt.

...