Qt之样式表qss基础知识

前言
本文是作者学习Qt样式表时搜集和总结的一些制作经验,总觉得市面上很缺少关于Qt的样式表教程,就此我打算编写一个可以给大家作为参考的qss样式表参考。
往后如果大家写qt不知道样式如何调整,希望我的文章可以给大家一些支持。
如果可以帮助大家,希望可以点赞关注支持我一下,你们的支持就是我的动力!!
某些我也不会的我也标注出来,日后如果有新发现,我会实时更新这个专栏
欢迎关注点赞支持
PyQt5学习爱好群主群:732513891(已满)
PyQt5学习爱好群二群:937759168(已满)
PyQt5学习爱好群三群:757679170

简单介绍样式表使用
通常我会使用Qt Designer来辅助我设计界面。其中右键点击控件会出现改变样式表。(如图1)

在弹出的样式表中,我们就可以对控件进行编写。(如图2)

格式可以直接写qss代码,用分号分割。如果想指定某控件,那么需要把控件类的名称写上,用大括号包好,大括号里面同样每行代码需要用分号分割。用类名称编写会让这个控件下的所有子控件都继承这个样式。使用时需要注意。
如果类名称加了点,表示不包括子控件。
/*选择器*/
QFrame{
color: rgb(255, 255, 255);
background-color: rgb(255, 255, 255);
}
QWidget{
color: rgb(255, 255, 255);
background-color: rgb(255, 255, 255);
}
.QFrame{
color: rgb(255, 255, 255);
background-color: rgb(255, 255, 255);
}
如果需要指定某控件来可以用#加上控件名称来指定改变样式,不会影响其他控件
使用*号可以匹配所有控件
/*id选择器*/
#listWidget{
color: rgb(255, 255, 255);
background-color: rgb(255, 255, 255);
}
*{
color: rgb(255, 255, 255);
background-color: rgb(255, 255, 255);
}
每一个控件都是由多个小控件合并出来的,比如日历就是由多个控件组成(如图3)

想要改变某一个部分的样式,就需要单独调取,比如中间日历天数位置就需要这样写来改变样式,
QCalendarWidgetd代表中间日历天数的背景布,QTableView代表上面的日期数字层,用空格分割即可
/*包含选择器*/
QCalendarWidget QTableView
{
alternate-background-color: rgba(255, 255, 255,0);
font: 14pt "Hei";
}
如果想在一个控件不同状态下改变他的样式,则需要用上选择器,选择器的使用方法是在控件类或名称后面加上冒号连着状态。
/*子控件选择器*/
QAbstractItemView:disabled {
background-color: rgba(255, 255, 255,0);
selection-color: white;
selection-background-color: rgba(193, 231, 255,0);
font-size:20px;
}
/*复合控件选择器*/
QCheckBox::indicator {
width:40px;
height:40px;
}
部分控件在不同状态下可以来进行样式改变。
:hover 鼠标悬停在上面时
:pressed 控件被按下时
:checked 控件被选中
:unchecked 控件未被选中
:indeterminate checkBox或者radioButton被部分选中(半选中)
:focus 控件获取焦点
:disabled 控件失效
:enabled 控件有效
:on 控件处于on状态
:off 控件处于off状态
:! 可以否定 例:QPushbutton:!pressed{}
:hover:checked 鼠标在上且被选中时
示例:QPushbutton:pressed{color:red;} 当鼠标点击按钮时,按钮变为红色
那么大致的语法使用我介绍完了,接下来直接给大家寄出车轮。望大家以后的日子不用重复造轮子~

基本样式(多数控件通用)
background-color:red 设置背景色
color:red 设置文字颜色
font-size:10px 设置字体大小
width: 20px 设置宽度
height: 20px 设置高度
image:url(./image.png) 添加图片
margin: 20px 外边距
padding: 20px 内边距
content: 20px 内容矩形
border:3px solid red 设置边框(3px粗细,solid样式,red颜色)
border-radius:8px 圆角(半径,单位,像素)
高级样式
/* 这个参数可以设置上下左右,同时样式可以分成多种。 */
border:10px; 可以添加上下左右(top/bottom/right/left/)
border-width:10px; 设置粗细
border-color:rgb(0,0,0); 设置颜色
border-radius:10px; 设置圆角
边框参数设置
border-top 单独设置边框样式
border-top-width 单独设置边框粗细
border-top-color 单独设置边框颜色
border-top-radius 单独设置圆角幅度
border:3px solid red;
样式参数设置
solid 实线边框 dotted 点状边框 none 无边框 dashed 虚线 double 双线
groove 3D凹槽边框 ridge 3D垄状边框 inset 上光源3D outset 下光源3D
高级颜色
颜色参数设置
red/black/blue... 可以直接写颜色
rgb(2,2,2) 可以写rgb颜色数值
#00FF00 可以写十六进制颜色信息
高级颜色设置
线性渐变色:
/* x1:0, y1:0, x2:1, y2:0 决定方向 */
/* stop: 0.4 gray 定义位置的颜色 把整条线分层10分,0.4的位置是gray颜色 */
qlineargradient(x1:0, y1:0, x2:1, y2:0,stop:0 white, stop: 0.4 gray, stop:1 yellow)
辐射渐变:
/* cx:0.7, cy:0.7 是圆心位置
radius:0.5 是半径
fx:0.5, fy:0.5 光源位置
stop:0 red 位置的颜色 */
qradialgradient(cx:0.7, cy:0.7, radius:0.5, fx:0.5, fy:0.5, stop:0 red, stop:1 blue)
角度渐变:
/* cx:0.5, cy:0.5 圆心位置
angle:90 起始角度
stop:0 red 位置颜色 */
qconicalgradient(cx:0.5, cy:0.5, angle:90, stop:0 red, stop:1 blue)
后续我会制作qss模版,需要的可以在群里等待。。。
欢迎关注点赞支持。
PyQt5学习爱好群主群:732513891(已满)
PyQt5学习爱好群二群:937759168(已满)
PyQt5学习爱好群三群:757679170
欢迎进入我主页,学习交流Qt样式制作