qt 选择器
qt的选择器中共有
- 通用选择器(*): 作用于所有widget
- 类型选择器: 作用于该类及子类
- 类选择器: 只作用于这个类
- ID选择器: 作用于某个对象
- 属性选择器: 作用域某个成员变量
- 包含选择器: 作用于某个类下的类
- 子元素选择器: 作用于某个类的直接子widget
- 伪类选择器: 选择某些状态,如QPushButton的hover和pressed状态
- 子控件选择器: 选择某个部件下面的子部件
qss内部数属性一般是不区分大小写的,但是类名,属性名区分大小写
加载方法QFile qss("StyleSheet.qss");
qss.open(QFile::ReadOnly);
app.setStyleSheet(qss.readAll());
qss.close();
类型、类、ID选择器
类型选择器
格式className
{
attribute: value;
...
}
其中attribute是控件的各种属性,className是类名,由QObject::metaObject()::className获得。类型选择器匹配该类及其派生类
例如:QPushButton
{
background: rgb(255, 255, 255);
}
在自定义的命名空间中,QObject::className()返回值中有::,和子控件选择器冲突。为了避免这个问题,我们可以把::换成—
namespace ns |
类选择器
类选择器和前面的区别是它不会选择子类。格式为:.className
{
attribute: value;
}
例如
.QFrame
{
padding: 15px 25px;
}
ID选择器
ID选择器选择的是对象的某个具体实例.格式为:#ID
{
attribute: value;
}
ID选择器会对所有同名的实例进行配置,无论它的类型是什么,而很多时候我们只想对某一个实例进行配置,因此一般前面需要加上类名匹配QPushButton#settings_popup_fileDialog_button
{
min-height: 31px;
min-width: 70px;
border: 1px solid black;
color: #FOFOFO;
min-height: 10px;
border-radius: 3px;
background: qlineargradient(spread: pad, x1:0,y1:0,x2:0,y2:1,stop:0 #454648,stop:1 #7A7A7A);
}
包含、子元素选择器
包含选择器
格式:selector1 selector2 ...
{
attribute: value;
}
它表示在selector1匹配的对象中,使用selector2进行筛选,然后对满足条件的对象进行匹配。
BaseDialog QPushButton |
子选择器
格式: selector1>selector2 { attribute: value; }
子选择器和上面的包含选择器相比多了一层限制,它只能有selector1和selector2,不能出现seelector3乃至更多。
它常用于对某些布局下特定控件进行选择.QGroupBox>.QCheckBox
{
color: blue;
}
属性、伪类、子控件选择器
属性选择器
格式[attribute=value]
{
attribute: value;
}
它先根据某些样式进行选择,然后修改样式[objectName|="button"]//objectName以button开头
{
color: red;
}
QPushButton[flat=“false”]
{
color: red;
}
属性选择器用的计较少
伪类选择器
格式类或类型选择器:status
{
attribute: value;
}
伪类选择器是对某些状态进行选择,如按下、禁用、启用等
伪类 | 说明 |
---|---|
:disabled | 控件禁用时 |
:enabled | … |
:focus | 获得焦点时 |
:hover | 鼠标放在widget上时 |
:pressed | … |
:checked | 被选中时 |
:unchecked | 未选中时 |
… |
子控件选择器
子控件选择器是对某些复杂控件中的小部件进行设置,这一般是对官方给的控件中某些部分进行管理。
例如QComboBox::down-arrow//QComBox的向下箭头
{
image: url(down-arrow.png);
}
QComboBox::down-arrow:pressed
{
position: relative;
top: 1px; left: 1px;
}