编写 native 风格的 Qt 程序(9)

上一篇我们介绍了在 Mac OS X 上面开发 Qt 程序需要注意的问题。现在,我们再来看看其它两个平台:X11 和 Windows。

X11

开发 X11 桌面程序,我们应当注意遵守 freedesktop.org 制定的一系列规范。X11 桌面环境,GNOME、KDE 等都会遵循这个规范,其中需要注意点包括:

  • 菜单规范
  • 图标主题
  • 自动启动
  • 书签
  • .desktop 文件

我们应当为我们的程序制作一个 .desktop 文件。具体标准可以在这里找到。一个简单的配置文件包括:

  • 应用程序图标
  • 菜单项
  • 注册的 MIME 类型

那么,我们有办法知道我们的程序现在正在运行在GNOME 还是 KDE 上吗?答案是:我们没有十足的把握保证能够获取这个信息。非要这么做的话,你可以检查 “DESKTOP_SESSION” 这个 env 环境变量。它的值可能是“kde”或者“gnome”,这或许有助于我们判断运行平台。不过,我们不应该绝对依赖与此,因为有的桌面环境可能不会设置这个变量值。

所以,我们的建议是,把你的应用程序同时放在 KDE 和 GNOME 上去运行。不要以为只有一个通过了测试,就不去测试另外一个。这其中需要特别注意的是以下几点:

  • 不同的快捷方式
  • 不同的主题
  • 不同的窗口行为

Windows

最后,我们来研究一下 Windows 平台上需要注意的问题。

QSettings可以用来操作 Windows 注册表。我们不仅可以将我们自己的程序配置信息存入系统注册表,也可以使用QSettings读取系统设置,例如:

QSettings settings("HKEY_CURRENT_USER\\ … \\Advanced”, QSettings::NativeFormat);
bool result = settings.value("EnableBalloonTips”, true).toBool();

我们可以利用本地 API 来实现 Vista 或者 windows 7 的半透明 Aero 特效。目前,Qt 还没有提供此类 API,所以我们不得不使用 Win32 API。具体方法是,在我们的组件上设置WA_TranslucentBackgroundWA_NoSystemBackground这两个属性。

Windows 7 Aero 效果

这就是我们这个系列的全部内容。至此,我们的系列已经结束。希望这个系列文章能够帮助大家开发出用户体验更好的本地应用程序。

3 Comments

  1. 白杨 2015年1月11日
    • 豆子 2015年1月13日
      • 白杨 2015年1月18日

Leave a Reply