Qt 关于setStyleSheet,有时间再测试下各种情况
2012-12-06 11:28
1126 查看
Qt 有好用的Qss系统.
但是这和CSS还是有很多不同.
:
QSS语法主要针对的是C++类.基类和派生类之间的关系.当然也包含一些CSS的父子关系
来看看一般情况下的选择器
我在此把选择器分为控件关联和继承关联. 因为这两种子类是不同的,所以我把继承关联的子类写成派生类.
类型选择器:QPushButton 继承关联 type
匹配所有QPushButton的实例和其派生类(含派生类的派生类...)的实例。
类选择器:.QPushButton 继承关联+层别区分 class 等价于*.QPushButton
匹配所有QPushButton的实例,但不包含其子类,这相当于:*[class~="QPushButton"]
~=的意思是测试一个QStringList类型的属性是否包含给定的QString
To match a subset of "class" values, each value must be preceded by a ".".
属性选择器:QPushButton[flat="false"]
继承关联+属性区分
匹配所有QPushButton属性flat为false的实例,
属性分为两种,静态的和动态的,静态属性是通过Q_PROPERTY()来指定的,动态属性通过使用setProperty来指定,如:
QLineEdit *nameEdit = new QLineEdit(this); //静态
nameEdit->setProperty("mandatoryField", true); //动态
如果在设置了qss后Qt属性改变了,需要重新设置qss来使其生效,可以使用先unset再set qss。
ID选择器:QPushButton#okButton
继承关联+手动区分
对应Qt里面的object name设置,使用这条CSS之前要先设置对应控件的object name为okButton
如:Ok->setObjectName(tr("okButton"));
E#myid : Matches any E element with ID equal to "myid".
通用类型选择器:*
控件关联
代表所有已有的类,会对所有控件有效果。
后代选择器:QDialog QPushButton
控件关联+层别不区分
匹配所有为QDialog后裔(包含儿子 和 儿子的儿子的递归)为QPushButton的实例
意思是所有QDialog的子控件的子控件(可递归),只要是QPushButton 就选中.
子选择器:QDialog > QPushButton
控件关联+层别区分
匹配所有的QDialog直接控件QPushButton的实例,不包含儿子的儿子的递归。
一些等同情况.
*[lang=fr] and [lang=fr] are equivalent.
*.warning and .warning are equivalent.
*#myid and #myid are equivalent.
最后:重要的一点.setStyleSheet("...");其实等价于 setStyleSheet("* {...}"); 要小心为上了.
理解了上面这些,Qss其他部分应该比较好理解了.以后再写.
2012-12-06
但是这和CSS还是有很多不同.
:
QSS语法主要针对的是C++类.基类和派生类之间的关系.当然也包含一些CSS的父子关系
来看看一般情况下的选择器
我在此把选择器分为控件关联和继承关联. 因为这两种子类是不同的,所以我把继承关联的子类写成派生类.
类型选择器:QPushButton 继承关联 type
匹配所有QPushButton的实例和其派生类(含派生类的派生类...)的实例。
类选择器:.QPushButton 继承关联+层别区分 class 等价于*.QPushButton
匹配所有QPushButton的实例,但不包含其子类,这相当于:*[class~="QPushButton"]
~=的意思是测试一个QStringList类型的属性是否包含给定的QString
To match a subset of "class" values, each value must be preceded by a ".".
属性选择器:QPushButton[flat="false"]
继承关联+属性区分
匹配所有QPushButton属性flat为false的实例,
属性分为两种,静态的和动态的,静态属性是通过Q_PROPERTY()来指定的,动态属性通过使用setProperty来指定,如:
QLineEdit *nameEdit = new QLineEdit(this); //静态
nameEdit->setProperty("mandatoryField", true); //动态
如果在设置了qss后Qt属性改变了,需要重新设置qss来使其生效,可以使用先unset再set qss。
ID选择器:QPushButton#okButton
继承关联+手动区分
对应Qt里面的object name设置,使用这条CSS之前要先设置对应控件的object name为okButton
如:Ok->setObjectName(tr("okButton"));
E#myid : Matches any E element with ID equal to "myid".
通用类型选择器:*
控件关联
代表所有已有的类,会对所有控件有效果。
后代选择器:QDialog QPushButton
控件关联+层别不区分
匹配所有为QDialog后裔(包含儿子 和 儿子的儿子的递归)为QPushButton的实例
意思是所有QDialog的子控件的子控件(可递归),只要是QPushButton 就选中.
子选择器:QDialog > QPushButton
控件关联+层别区分
匹配所有的QDialog直接控件QPushButton的实例,不包含儿子的儿子的递归。
一些等同情况.
*[lang=fr] and [lang=fr] are equivalent.
*.warning and .warning are equivalent.
*#myid and #myid are equivalent.
最后:重要的一点.setStyleSheet("...");其实等价于 setStyleSheet("* {...}"); 要小心为上了.
理解了上面这些,Qss其他部分应该比较好理解了.以后再写.
2012-12-06
相关文章推荐
- 关于QT利用setStyleSheet为主控件添加背景图片,而不影响其子控件的背景设置
- QT样式表,setstylesheet,控件使用图片
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt利用setStyleSheet设置样式
- Qt 之 setStyleSheet
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中使用setStyleSheet对按钮进行外观设置
- QT5.2 + VS2012 给QWidget 对象使用setStyleSheet()设置背景图片运行不显示的问题
- Qt中各个控件利用Qt Designer来setStyleSheet
- Qt Designer中利用各个控件来setStyleSheet
- Qt 自定义控件应用QSS(setStyleSheet)设置由Q_PROPERTY设置的属性
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt利用setStyleSheet设置样式
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
- QT (QSS) 编程, QSS语法概述。。setstylesheet