目录 样式控制 一、 简介 1、 基本概念 2、 使用 2.1 局部设置 2.2 全局设置 二、 QSS 样式表 1、 QSS 选择器 1.1 通配符选择器 1.2 类型选择器 1.3 类选择器 1.4 ID 选择器 1.5 属性选择器 1.6 后
目录
- 样式控制
- 一、 简介
- 二、 QSS 样式表
- 1、 QSS 选择器
- 1.1 通配符选择器
- 1.2 类型选择器
- 1.3 类选择器
- 1.4 ID 选择器
- 1.5 属性选择器
- 1.6 后代选择器
- 1.7 子选择器
- 1.8 子控件选择器
- 2、 QSS 伪状态
- 3、 QSS 声明
- 3.1 背景属性
- 3.2 边框属性
- 3.3 box 属性
- 3.4 字体属性
- 3.5 外边距属性
- 3.6 内边距属性
- 3.7 定位属性
- 3.8 文本属性
样式控制
一、 简介
1、 基本概念
QSS —— Qt 样式表
语法:
选择器:伪状态 {
声明
}
用来自定义控件外观的一种机制
可以将其类比CSS;但是没有CSS强大
2、 使用
2.1 局部设置
指定需要设置外观的控件,调用该控件的 setStyleSheet(qss_sheet_str)
参考作用范围:
最终作用范围:
2.2 全局设置
指定全局的 QApplication 对象,调用 app.setStyleSheet(qss_sheet_str)
参考作用范围:
最终作用范围:
app = QApplication(sys.avgs)
# text.qss 是我们保存的样式表
with open("text.qss", "r") as f:
content = f.read()
app.setStyleSheet(content)
二、 QSS 样式表
1、 QSS 选择器
作用:指明哪些控件会受到样式的作用
1.1 通配符选择器
使用 *
来匹配对象内所有的控件
* {
background-color: red;
}
1.2 类型选择器
通过控件类型来匹配控件(包含子类)
QWidget {
background-color: red; /* 匹配所有的 QWidget 控件,包括继承了 QWidget 类的子类 */
}
QPushButton {
background-coloc: red; /* 匹配所有的 QPushButton 控件,包括继承了 QPushButton 类的子类 */
}
1.3 类选择器
通过控件类型来匹配控件(不包含子类)
.QPushButton {
background-color: red; /* 匹配所有的 QPushButton 控件,不包含子类 */
}
1.4 ID 选择器
通过 objName 来匹配控件,注意其与CSS选择器里面的ID不一样,它可以有多个
#hehe {
background-color: red; /* 匹配 setObjectName("hehe") 的控件 */
}
1.5 属性选择器
通过属性值来匹配控件
QPushButton[name="warning"] {
background-color: red; /* 匹配 QPushButton类型控件内, setProperty("name", "warning") 的控件 */
}
QPushButton[name] {
background-color: red; /* 匹配 QPushButton类型控件内,拥有属性name这个键的控件 */
}
1.6 后代选择器
通过父控件的(直接或间接)子控件来筛选控件
QDialog QPushButton {
background-color: red; /* 只匹配所有QDialog中包含的QPushButton 控件 */
}
1.7 子选择器
通过父控件的(直接)子控件来筛选控件
QDialog>QPushButton {
background-color: red; /* 只匹配所有QDialog中,其儿子QPushButton控件,不包含孙子 */
}
1.8 子控件选择器
用来筛选一个复合控件上的子控件
QCheckBox::indicator {
image: path; /* 设置复选框前面的选择图标,语法:复合控件::子控件 */
}
常见子控件
子控件 |
描述 |
::add-line
在QScrollBar中跳转下一行的按钮
::add-page
在QScrollBar中滑动条和add-line之间的区域
::branch
在QTreeView中的分支指示器
::chunk
在QProgressBar中的进度块
::close-button
在QDockWidget或QTabBar选项卡的关闭按钮
::corner
在QAbstractScrollArea中两个滚动条之间的角落
::down-arrow
在QComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的向下箭头
::down-button
在QScrollBar或QSpinBox中的向下按钮
::drop-down
在QComboBox中的下拉框
::float-button
在QDockWidget中的浮动按钮
::groove
在QSlider中的滑动槽
::indicator
在QAbstractItemVIew、QCheckBox、QRadioButton、可选中的菜单项或可选中的QGroupBox中的指示器
::handle
在QScrollBar、QSplitter和QSlider中的操作条(滑动条)
::icon
在QAbstractItemVIew或QMenu中的图标
::item
在QAbstractItemVIew、QMenuBar、QMenu或QStatuBar中的一项
::left-arrow
在QScrollBar中的向左箭头
::left-corner
在QTabWidget中的左上角
::menu-arrow
带有菜单的QToolButton中的箭头
::menu-button
在QToolButton中的菜单按钮
::menu-indicator
在QPushButton中的菜单指示器
::right-arrow
在QMenu或QScrollBar中的向右箭头
::pane
在QTabWidget中的边或框
::right-corner
在QTabWidget中的右上角
::scroller
在QMenu或QTabBar中的滚动条
::section
在QHeaderView中的区块
::separator
在QMenu或QMainWIndow中分隔条
::sub-line
在QScrollBar中跳转上一行的按钮
::sub-page
在QScrollBar中滑动条和sub-line之间的区域
::tab
在QTabBar或QToolBox中选项卡
::tab-bar
在QTabWidget中的选项卡栏
::tear
在QTabBar中的tear指示器
::tearoff
在QMenu中的tear-off指示器
::text
在QAbstractItemView中的文本
::title
在QGroupBox或QDockWidget中的标题栏
::up-arrow
在QComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的向上箭头
::up-button
在QScrollBar或QSpinBox中的向上按钮
2、 QSS 伪状态
2.1 描述
作用:限制控件只能在某种状态下,被样式表作用
语法:选择器:伪状态
2.2 常见伪状态
伪状态 |
作用 |
:active
此状态在widget驻留在活动窗口中时设置。
:adjoins-item
此状态在QTreeView的::branch与项相邻时设置。
:alternate
当QAbstractItemView::ternatingRowColors()设置为true时,将为绘制QAbstractItemView的行时的每隔一行设置此状态。
:bottom
该项目位于底部。例如,标签位于底部的QTabBar。
:checked
该项目已选中。例如,QAbstractButton的选中状态。
:closable
这些项目可以关闭。例如,QDockWidget打开了QDockWidget::DockWidgetClosable功能。
:default
该项目为默认值。例如,QMenu中的默认QPushButton或默认操作。
:disabled
该项目已禁用。
:editable
QComboBox是可编辑的。
:edit-focus
该项具有编辑焦点(请参见QStyle::State_HasEditFocus)。此状态仅适用于Qt扩展应用程序。
:enabled
该项目已启用。
:exclusive
该项目是独占项目组的一部分。例如,独占QActionGroup中的菜单项。
:first
该项目是(列表中的)第一个项目。例如,QTabBar中的第一个选项卡。
:flat
这件物品是平的。例如,平面QPushButton。
:floatable
这些项目可以浮动。例如,QDockWidget打开了QDockWidget::DockWidgetFloatable功能。
:focus
该项具有输入焦点。
:has-children
该项目具有子项。例如,QTreeView中具有子项的项。
:has-siblings
该项目有同级。例如,QTreeView中的同级项。
:horizontal
该项目具有水平方向
:hover
鼠标悬停在该项目上。
:indeterminate
该项具有不确定状态。例如,部分选中QCheckBox或QRadioButton。
:last
该项是(列表中的)最后一项。例如,QTabBar中的最后一个选项卡。
:left
该项目位于左侧。例如,选项卡位于左侧的QTabBar。
:maximized
该项目将最大化。例如,最大化的QMdiSubWindow。
:middle
项目在中间(在列表中)。例如,QTabBar中不在开头或结尾的制表符。
:minimized
该项目被最小化。例如,最小化的QMdiSubWindow。
:movable
物品可以四处移动。例如,QDockWidget打开了QDockWidget::DockWidgetMoovable功能。
:no-frame
该项目没有框架。例如,无框架的QSpinBox或QLineEdit。
:non-exclusive
该项是非独占项组的一部分。例如,非独占QActionGroup中的菜单项。
:off
对于可以切换的项目,这适用于处于“关闭”状态的项目。
:on
对于可以切换的项目,这适用于处于“打开”状态的widget。
:only-one
该项目是(列表中的)唯一项目。例如,QTabBar中的一个单独的选项卡。
:open
该项目处于打开状态。例如,QTreeView中的展开项,或具有打开菜单的QComboBox或QPushButton。
:next-selected
选择下一项(在列表中)。例如,QTabBar的选定选项卡紧挨着该项。
:pressed
正在使用鼠标按下该项。
:previous-selected
选择上一项(在列表中)。例如,QTabBar中选定选项卡旁边的选项卡。
:read-only
该项目标记为只读或不可编辑。例如,只读QLineEdit或不可编辑的QComboBox。
:right
该项目位于右侧。例如,选项卡位于右侧的QTabBar。
:selected
该项目即被选中。例如,QTabBar中的选定选项卡或QMenu中的选定项目。
:top
该项目位于顶部。例如,选项卡位于顶部的QTabBar。
:unchecked
该项目处于取消选中状态。
:vertical
该项目具有垂直方向。
:window
widget是窗口(即顶层小部件)
不同的控件可能有某种特定的伪状态,无法通用,具体查看官方文档
!
表示否,与当前状态相反
可以连续使用:
:hover:checked
:鼠标在控件上面,并且选中时
3、 QSS 声明
QSS的强大在于组合功能的强大,这里只是简单介绍基本功能,将简单功能组合起来才能实现好看的效果
3.1 背景属性
属性 |
描述 |
CSS |
background
在一个声明中设置所有的背景属性。
1
background-attachment
设置背景图像是否固定或者随着页面的其余部分滚动。
1
background-color
设置元素的背景颜色。
1
background-image
设置元素的背景图像。
1
background-position
设置背景图像的开始位置。
1
background-repeat
设置是否及如何重复背景图像。
1
background-clip
规定背景的绘制区域。
3
background-origin
规定背景图片的定位区域。
3
background-size
规定背景图片的尺寸。
3
3.2 边框属性
属性 |
描述 |
CSS |
border
在一个声明中设置所有的边框属性。
1
border-bottom
在一个声明中设置所有的下边框属性。
1
border-bottom-color
设置下边框的颜色。
2
border-bottom-style
设置下边框的样式。
2
border-bottom-width
设置下边框的宽度。
1
border-color
设置四条边框的颜色。
1
border-left
在一个声明中设置所有的左边框属性。
1
border-left-color
设置左边框的颜色。
2
border-left-style
设置左边框的样式。
2
border-left-width
设置左边框的宽度。
1
border-right
在一个声明中设置所有的右边框属性。
1
border-right-color
设置右边框的颜色。
2
border-right-style
设置右边框的样式。
2
border-right-width
设置右边框的宽度。
1
border-style
设置四条边框的样式。
1
border-top
在一个声明中设置所有的上边框属性。
1
border-top-color
设置上边框的颜色。
2
border-top-style
设置上边框的样式。
2
border-top-width
设置上边框的宽度。
1
border-width
设置四条边框的宽度。
1
outline
在一个声明中设置所有的轮廓属性。
2
outline-color
设置轮廓的颜色。
2
outline-style
设置轮廓的样式。
2
outline-width
设置轮廓的宽度。
2
border-bottom-left-radius
定义边框左下角的形状。
3
border-bottom-right-radius
定义边框右下角的形状。
3
border-image
简写属性,设置所有 border-image-属性。
3
border-image-outset
规定边框图像区域超出边框的量。
3
border-image-repeat
图像边框是否应平铺(repeated)、铺满(rounded)或拉伸(stretched)。
3
border-image-slice
规定图像边框的向内偏移。
3
border-image-source
规定用作边框的图片。
3
border-image-width
规定图片边框的宽度。
3
border-radius
简写属性,设置所有四个 border-*-radius 属性。
3
border-top-left-radius
定义边框左上角的形状。
3
border-top-right-radius
定义边框右下角的形状。
3
box-shadow
向方框添加一个或多个阴影。
3
3.3 box 属性
属性 |
描述 |
CSS |
overflow-x
如果内容溢出了元素内容区域,是否对内容的左/右边缘进行裁剪。
3
overflow-y
如果内容溢出了元素内容区域,是否对内容的上/下边缘进行裁剪。
3
overflow-style
规定溢出元素的首选滚动方法。
3
rotation
围绕由 rotation-point 属性定义的点对元素进行旋转。
3
rotation-point
定义距离上左边框边缘的偏移点。
3
3.4 字体属性
属性 |
描述 |
CSS |
font
在一个声明中设置所有字体属性。
1
font-family
规定文本的字体系列。
1
font-size
规定文本的字体尺寸。
1
font-size-adjust
为元素规定 aspect 值。
2
font-stretch
收缩或拉伸当前的字体系列。
2
font-style
规定文本的字体样式。
1
font-variant
规定是否以小型大写字母的字体显示文本。
1
font-weight
规定字体的粗细。
1
3.5 外边距属性
属性 |
描述 |
CSS |
margin
在一个声明中设置所有外边距属性。
1
margin-bottom
设置元素的下外边距。
1
margin-left
设置元素的左外边距。
1
margin-right
设置元素的右外边距。
1
margin-top
设置元素的上外边距。
1
3.6 内边距属性
属性 |
描述 |
CSS |
padding
在一个声明中设置所有内边距属性。
1
padding-bottom
设置元素的下内边距。
1
padding-left
设置元素的左内边距。
1
padding-right
设置元素的右内边距。
1
padding-top
设置元素的上内边距。
1
3.7 定位属性
属性 |
描述 |
CSS |
bottom
设置定位元素下外边距边界与其包含块下边界之间的偏移。
2
clear
规定元素的哪一侧不允许其他浮动元素。
1
clip
剪裁绝对定位元素。
2
cursor
规定要显示的光标的类型(形状)。
2
display
规定元素应该生成的框的类型。
1
float
规定框是否应该浮动。
1
left
设置定位元素左外边距边界与其包含块左边界之间的偏移。
2
overflow
规定当内容溢出元素框时发生的事情。
2
position
规定元素的定位类型。
2
right
设置定位元素右外边距边界与其包含块右边界之间的偏移。
2
top
设置定位元素的上外边距边界与其包含块上边界之间的偏移。
2
vertical-align
设置元素的垂直对齐方式。
1
visibility
规定元素是否可见。
2
z-index
设置元素的堆叠顺序。
2
3.8 文本属性
属性 |
描述 |
CSS |
color
设置文本的颜色。
1
direction
规定文本的方向 / 书写方向。
2
letter-spacing
设置字符间距。
1
line-height
设置行高。
1
text-align
规定文本的水平对齐方式。
1
text-decoration
规定添加到文本的装饰效果。
1
text-indent
规定文本块首行的缩进。
1
text-transform
控制文本的大小写。
1
unicode-bidi
设置文本方向。
2
white-space
规定如何处理元素中的空白。
1
word-spacing
设置单词间距。
1
hanging-punctuation
规定标点字符是否位于线框之外。
3
punctuation-trim
规定是否对标点字符进行修剪。
3
text-emphasis
向元素的文本应用重点标记以及重点标记的前景色。
3
text-justify
规定当 text-align 设置为 "justify" 时所使用的对齐方法。
3
text-outline
规定文本的轮廓。
3
text-overflow
规定当文本溢出包含元素时发生的事情。
3
text-shadow
向文本添加阴影。
3
text-wrap
规定文本的换行规则。
3
word-break
规定非中日韩文本的换行规则。
3
word-wrap
允许对长的不可分割的单词进行分割并换行到下一行。
3
【转自:外国服务器 http://www.558idc.com/shsgf.html转载请说明出处】