Qt样式表是专为设置应用程序的观感(look and feel)而生的,它是从Qt 4.2开始引入的描述窗口部件观感的强大机制,允许你按照自己的需求定制应用程序的观感。并且从Qt 4.5开始,Qt样式表全面支持Mac OS X平台。
Qt样式表的设计灵感主要来自于HTML的层叠样式表(Cascading Style Sheets,CSS),但它同时适用于窗口部件。在介绍Qt样式表之前,我们先来看看什么是应用程序的外观(或者叫做观感)。
9.1 应用程序的观感
相信大家已经发现,Qt应用程序在每一个所支持的平台上都可以看起来像原生的本地程序一样。Qt是通过模拟各个平台的观感来实现这一点的,而不是使用特定的平台或者工具包的窗口部件集。图9-1显示了在不同平台下的Qt组件中的ComboBox的观感。
图 9-1 窗口部件在不同平台上的观感
9.1.1 应用程序的风格
每个应用程序都有自己的样式(Style)。运行于KDE下的Qt/X11应用程序的默认样式是Plastique,而运行于GNOME下的应用程序的默认样式是Cleanlooks。这些样式使用了渐变和抗锯齿效果,以用来提供一种时尚的观感。运行Qt应用程序的用户可以通过使用命令行参数-style覆盖原有的默认样式。例如,在X11下,要想使用Motif样式来运行名为app的程序,只需要简单的输入以下命令即可:
./app –style motif
与其他样式不同,Windows XP、Windows Vista和Mac所特有的样式只能在它们的本地平台上有效,因为它们需要依赖相应平台的主题引擎。
还有另外的一种样式QtDotNet,它来自于Qt Solutions模块。你也可以创建出自己所特别喜好的与众不同的样式,这部分内容已经超出了本书讨论的范围,如有需要请参阅相关文档。
9.1.2 如何设置样式
要设置整个应用程序的样式,可以调用QApplication::setStyle()方法,或者由用户在应用程序运行时输入-style命令行参数来指定:
./myapplication -style motif
如果没有显式的指定,那么Qt将根据用户的平台和桌面环境自行选择最为合适的样式。
如果要单独设置某个窗口部件的样式,可以对其调用QWidget::setStyle()方法。
9.2 QStyle类的使用
说到样式表,就不可避免的要谈到Qt的样式(Qt Style)。
在Qt样式表出现之前,我们主要是通过子类化QStyle类或者预定义一个样式,例如QWindowStyle,来定制应用程序的观感,而Qt本身也是使用这种方法来为它所支持的不同平台提供特定的观感的。
QStyle类的应用比较广泛。它封装了GUI应用程序所使用的观感样式,是一个抽象基类。Qt包含了一系列的QStyle的子类,它们模拟了在各种不同平台上的GUI界面的观感,这些观感可以通过设置QWindowStyle、QMacStyle、QMotifStyle等样式来实现,而且在我们调用QtGui这个模块时,如果事先没有显式的指定,那么Qt会自动判断环境并选择最为适合的样式。此外,样式也可作为插件来被应用程序使用。
下面我们使用Qt Creator结合代码,创建一个实例,大家从中可以学习到使用QStyle类配置应用程序的观感的方法。
9.2.1 实例-使用QStyle
本实例的代码见styleCreator实例。
第1步,创建项目。
启动Qt Creator,在弹出的【New...】对话框中选择Empty Qt4 Project类型,如图所示,点击【OK】按钮进入到下一步的设置界面。