Макрос обнаруживает KDE или GNOME в qt4

У меня возникла проблема при использовании в операционной системе GNOME или KDE, в которой запущено приложение. Программа, которую я делаю QT4, и у меня проблемы с просмотром в системном трее, поэтому я передаю ее в KDE, но это не макрос для этого. PD: я использую KDE и C/C. Я ищу в Интернете и вижу это: Создание исполняемого файла для Windows с помощью Qt в Linux А для KDE?

Привет Алехандро Эспиноса


person Alejandro Espinosa    schedule 18.09.2010    source источник


Ответы (2)


Qt не предоставляет такого рода определений на основе среды рабочего стола. Если вам нужно знать среду рабочего стола во время компиляции, лучше всего изменить систему сборки, чтобы передать необходимые определения компилятору. Среда рабочего стола может быть заключена с помощью различных предварительных условий, таких как переменные среды, доступность приложений, библиотек или заголовков. Выбор зависит от того, что вы пытаетесь сделать.

Например, если вы выберете маршрут проверки среды, KDE определяет переменную KDE_FULL_SESSION, тогда как в GNOME для переменной DESKTOP_SESSION установлено значение «gnome». К вашему сведению, именно так Qt определяет DE во время выполнения.

person Jakub Wieczorek    schedule 18.09.2010

вы можете сделать это с помощью bash, написав скрипт, содержащий данный код

#!/bin/bash
echo $XDG_CURRENT_DESKTOP

Теперь, когда вы выполняете код из Qprocess, вы можете прочитать вывод Qprocess и проверить, что является выводом Qprocess.

{
QProcess chkdesk;
chkdesk.start("getenv");  //getenv is bash script 
qDebug() << chkdesk.readAll();  
}
person bulldog68    schedule 10.08.2015
comment
См. также qgetenv, чтобы узнать, как лучше получить переменную окружения. - person Adversus; 20.10.2020