QT之qss样式表设置

简述

Qt样式表的术语和语法规则几乎和CSS相同。

样式规则:

1 QSS样式规则由一个选择器和声明组成。QPushButton{ color:red},QPushButton为选择器,{coloe:red}为声明。

2 多个选择器可指定同一个声明,用来对这一组部件统一设置。如QPushButton,QLabel,QTextLine{color:red};

参考助手:Qt Style Sheets ReferenceList of Properties部分。

选择器类型

QSS支持所有的selectors defined in CSS2。下表总结最有用的类型选择器。

选择器

实例

说明

通用选择器

*

匹配所有部件

类型选择器

QPushButton

匹配QPushButton及子类的实例

类选择器

.QPushButton

匹配QPushButton但不包含子类

属性选择器

QPushButton[flat =“flase”]

匹配QPushButtonflatfalse的实例

ID选择器

QPushButton#okButton

匹配objectNameokButton的实例

后代选择器

QDialog QPushButton

匹配属于QDialog后代(孩子,子孙等)的QPushButton所有实例

子类选择器

QDialog>QPushButton

匹配属于Dialog直接子类的QPushButton所有实例。

子控件

         对于样式复杂的部件,需要访问子控件,例如:QComboBox的下拉按钮或QSpinBox的上下箭头。例如:QComboBox::drop-down{ image:url(drop_down.png)}

参考助手:Qt Style Sheets ReferenceList of Stylable Widgets部分和Qt Style Sheets ReferenceList of Sub-Controls部分。

伪选择器

         伪选择器可以包含伪状态,意味着限制基于部件状态的应用程序规则。伪状态出现在伪选择器的后面,用冒号(:)关联。列如鼠标滑过按钮: QPushButton:hover{color:white}

伪状态用感叹号(!)表示否定,例如鼠标不滑过QPushButton:!hover{color:red}

伪状态可以连接使用,这时候隐藏了一个逻辑与。例如当鼠标滑过一个选择的QCheckBox部件。QCheckBox:hover:checked{ color:white}。

如果需要可使用” , ”来表示逻辑或。列如 QCheckBox:hover:checked{ color : white}

伪状态也可以和子控件组合QComboBox::drop-down:hover{ image:url(dropdown_bright.png)}

级联效应

QSS可以在QApplication,父部件,子部件中设置。任意部件的有效样式表通过合并部件的祖先(父,祖等)以及QApplication上设置样式表。冲突发生时,不论冲突规则的特殊性,部件自身样式总优先于任何继承样式表。

动态属性

可实现动态的效果。可以为QObject设置一个urgent属性,该属性将跟随该类。如下创建样式表选择器依赖于动态属性,例如urgent:QLineEdit[urgent = true]{ color:red;}

当属性值发生变化时,样式表不会自动发生变化,需要手动更新。例如:

myLineEdit->setProperty("urgent", true);

myLineEdit->style()->unpolish(myLineEdit); //将原来的样式表属性进行清除

myLineEdit->style()->polish(myLineEdit);  //设置新的样式表属性

 

原始属性

         任何可被识别的Q_PROPERTY都可使用qproperty-语法设置。

比如:在QLabel 中:Q_PROPERTY(QString text READ text WRITE setText) 则可在样式表中设置成:QLabel{qproperty-text:"helloWorld";} 与setText()具有同样的作用。

 

自定义属性

         当需要设置一个原始属性没有的属性时,自定义属性可派上用场了。需要注意的是QSS只能用于QWidget及其子孙。

QT之QSS(黑色炫酷)

         Qt助手中有关各种部件的QSS详细讲解,资源很丰富,请参考:Qt Style Sheets Examples

 

 

你可能感兴趣的:(QT)