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

本文曾经在 51CTO 发表过,不过当时仅仅完成了一大部分,还有一些结尾没有写完。后来有一些别的变故,包括新建了这个博客,使得这个系列从此沉寂了下来。今天在这里重新完成这个系列,算是“补完计划”吧~当然,前面部分与 51CTO 上面的《编写native风格的Qt程序》系列多多少少有些雷同(确切的说是相当雷同),真正新增的部分要到最后才会出现;-P

在这个系列中,你将会了解到如何让你的 Qt 桌面应用程序看上去更加 native,也就是一种原生风格。这里,我假设你已经清楚如何使用 Qt 编写桌面应用程序,因为文章中大多都是所谓的“细节”,而有时候恰恰是这些“细节”决定着用户体验。同时,这里的程序都是指桌面程序,不包括各个嵌入式平台。

关于 Qt 的介绍这里就不再赘述。这里只说明一点,相比其他的 C++ UI库,Qt 的处理实际上更类似 Java 的 Swing。Qt 的大部分组件都是由自己的绘图系统绘制出来,这一点决定了 Qt 的运行效率不会像 MFC 或者 wxWidgets 那么高。同时,也正是由于这一点,使得 Qt 的桌面程序有时候看起来不是那么原生。

所谓 native,意思就是我们所谓的“原生”。任何桌面环境,Windows、GNOME、KDE、MacOS,都有着自己独特的风格。如果应用程序有着同系统界面一致的风格,我们就说这个程序是 native 风格的。通常,获取一个窗口的最最 native 的方式就是通过调用系统自己的函数,例如在 Windows 平台上使用 win32 API 获得一个窗口,这个窗口一定是 native 的,也就是原生的。同样,使用 GNOME 或者 KDE 的 API,也会获得一个原生的窗口。各个平台上窗口组件的布局很多都是不同的。在 Windows 上,菜单中的 Help 总是出现在其他菜单项相邻的位置,菜单栏最右侧往往是一片空白。但是在 MacOS 上,Help 菜单是出现在菜单栏的最右侧,Help 与其他菜单项之间会有一大段空白。这就是两个平台的 native 风格的差异。如果你的程序仅仅按照 Windows 平台上的样式编写,MacOS 用户就会觉得这个程序很山寨。这对于一个真正跨平台的程序来说,这是不能令人接受的。

现在我们说明,这个系列文章所做的工作,就是让 Qt 桌面程序在 Windows、GNOME、KDE 和 MacOS 下都有着同原生程序一样的效果,或者说,是尽可能地一致起来。当然,有些时候这个目的很难实现,不过我们还是需要朝这个努力一下。

在开始正文之前,我们应该知道,各个平台其实都有自己的界面设计指南,告诉开发者在这个平台上,确定按钮和取消按钮究竟谁在前谁在后,应用程序通常字体是什么,几号字等等。这些指导性文档都可以在网上找到,下面我们列出来供大家参考:

Windows:Windows 用户体验交互指南(Windows User Experience Interaction Guidelines)

Apple:Apple 用户界面指南(Apple Human Interface Guidelines)

GNOME:GNOME 用户界面指南(GNOME Human Interface Guidelines)

KDE:KDE 用户界面指南(KDE User Interface Guidelines)

3 Comments

  1. 向前 2012年4月3日
    • DevBean 2012年4月5日
  2. JeffGuo 2015年1月9日

Leave a Reply