9.5 问题与解答

问:CSS 样式表的命令是否不能完全适用于 Qt 中?

答:在 Qt 中,样式表文件可以存成.qss 文件。QSS 在设计时参考了 CSS 的设计,但两 者在语法、属性等方面有些差别,所以 CSS 不能完全适用于 Qt。

问:在 Qt 中如何读取 CSS 样式表中的某个属性的具体值? 答:在本章里面已经介绍过,样式表是一种在运行时解释的普通文本文件 ,通常可以保存成.qss 文件。可以使用 QFile 类读取、设置其中的内容,具体请参考本章的实例。

问:用 Qt Designer 的样式表添加图片和用 drawPixmap()函数实现显示图片哪个效果 更好?

答:drawPixmap()函数使用了缓冲技术,消耗的系统资源比较少。通常情况下,使用样 式表不如直接调用 drawPixmap()函数来绘图效率高。尤其是在嵌入式系统中,在系统资源有 限的情况下,尽量不要使用样式表。但是 样式表也有优势,就是它易于控制和使用,在系统 资源比较丰富的情况下,比如桌面环境,也可酌情使用。

问:如何给应用程序中的某一个窗口部件单独设置样式表 ,我怎么设置都没有效果?这 是 QT 帮助文档里自带的说将 stylesheet 应用到具体对象上的方法,但似乎不起作用。

ID Selector
QPushButton#okButton
Matches all QPushButton instances whose object name is okButton.

答: 会起作用的,可能文档中的一个关键点你没有注意到,请看下面的示例

QDialog myDialog;
myDialog.setObjectName("mydialog");//如果要对这个对象单独设 stylesheet 的话一定要设置它的
objectName

然后再像下面这样写就可以了:

QDialog#mydialog {background-image: url(2.bmp);