0

在运行应用程序的 GNOME 或 KDE 操作系统中使用时,我有一个问题需要检测。我正在做QT4的程序,我在系统托盘中查找时感觉很麻烦,所以我将它传递给KDE,但这样做不是宏。PD:我使用 KDE 和 C/C。我在网上搜索,我看到了这个: Creating executable for Windows using Qt on Linux But for KDE?

问候亚历杭德罗·埃斯皮诺萨

4

2 回答 2

2

Qt 不提供这种基于桌面环境的定义。如果您需要在编译时了解桌面环境,那么最好的办法是修改您的构建系统以将必要的定义传递给编译器。桌面环境可以通过不同的先决条件来确定,例如环境变量、应用程序的可用性、库或头文件。选择取决于您要做什么。

例如,如果您采用环境检查路线,KDE 定义 KDE_FULL_SESSION 变量,而 GNOME 将 DESKTOP_SESSION 变量设置为“gnome”。仅供参考,这就是 Qt 在运行时检测 DE 的方式。

于 2010-09-18T22:54:47.543 回答
2

您可以在 bash 的帮助下通过编写包含给定代码的脚本来完成

#!/bin/bash
echo $XDG_CURRENT_DESKTOP

现在,当您从 Qprocess 执行代码时,您可以读取 Qprocess 的输出并检查 Qprocess 的输出是什么。

{
QProcess chkdesk;
chkdesk.start("getenv");  //getenv is bash script 
qDebug() << chkdesk.readAll();  
}
于 2015-08-10T19:21:29.147 回答