2010-09-18 40 views
0

J'ai un problème à détecter lorsqu'il est utilisé dans le système d'exploitation GNOME ou KDE qui exécute l'application. Le programme que je fais QT4, et j'ai du mal à regarder- dans le systray, donc je le passe à KDE, mais ce n'est pas la macro pour le faire. PD: J'utilise KDE et C/C. Je recherche sur le web et je vois ceci: Creating executable for Windows using Qt on Linux Mais pour KDE?Macro détecter KDE ou GNOME dans qt4

Salutations Alejandro Espinosa

Répondre

1

Qt ne fournit pas ce type de base de l'définit environnement de bureau. Si vous avez besoin de connaître l'environnement de bureau au moment de la compilation, alors votre meilleur pari serait de modifier votre système de construction pour passer les définitions nécessaires au compilateur. L'environnement de bureau peut être conclu par différents prérequis tels que les variables d'environnement, la disponibilité des applications, les bibliothèques ou les en-têtes. Le choix dépend de ce que vous essayez de faire. Par exemple, si vous prenez la route d'inspection d'environnement, KDE définit la variable KDE_FULL_SESSION alors que GNOME a la variable DESKTOP_SESSION définie sur "gnome". Pour info, c'est ainsi que Qt détecte le DE lors de l'exécution.

0

vous pouvez le faire avec l'aide de bash en écrivant un script contenant le code donné

#!/bin/bash 
echo $XDG_CURRENT_DESKTOP 

Maintenant lorsque vous exécutez le code de QProcess vous pouvez lire la sortie de QProcess et vérifier quelle est la sortie de QProcess .

{ 
QProcess chkdesk; 
chkdesk.start("getenv"); //getenv is bash script 
qDebug() << chkdesk.readAll(); 
}