Qt5--QSS(二)知识总结

参考文档:http://www.th7.cn/web/html-css/201405/37286.shtml

Qt样式表单

 Qt的样式表单允许我们在对程序不做任何代码上的更改的情况下轻松改变应用程序的外观。其思想来源于网页设计中的CSS,即可以将功能设计和美学设计分开。它的语法和概念和HTML CSS也是差不多的。
 其原理可简单理解为:Qt内部存在一个CSS语法解析器,我们将我们的样式控制以CSS语法定义到外部文件,CSS语法解析器解析后在调用相应的功能模块以完成样式变化。(其实这部分功能我们完全可以通过代码实现,只是这么做既麻烦而且一旦更改会很不方便)

说明:Qt Style 样式语法虽然和CSS语法差不多,但是其功能是其子集,在使用QT style时需具备CSS语法知识


基本语法

1、样式表单由一系列样式规则组成。每条规则可以分成两部分:选择器和声明

这里写图片描述

选择器表示规则作用到哪些控件上;声明则详细说明了是什么规则。

2、 Qt的样式表语法不区分大小写,所以color,Color,coLor,coloR都表示同样的颜色属性。但是指代类的类名的时候,是区分大小写的。

3、多个选择器可以并列使用,它们之间用逗号隔开,例如:

     QPushButton,QLineEdit, QComboBox{ 
          color: red 
     }

4、声明部分也可以有多个并列,之间用分号隔开。当我们要设置的选择器有多个属性的时候,就需要并列多个声明,例如:


QPushButton{ 
    color: red; 
    background-color: white 
}

这条样式规则让按钮的字体变成红色,同时背景色变成白色。

选择器类别

Qt样式表单支持所有在CSS2中定义的选择器类型,下面介绍几种最为常用的选择器定义。

全局选择器*选中所有的Widget
特定类型选择器QPushButton选中所有QPushButton以及它派生出来的子类的对象
属性选择器QPushButton[flat=”false”]选中所有flat属性为false的按钮

属性选择器

可用于QT中所有具有toString方法的属性,例如QPushButton的text、checked等属性。

当属性是一个QStringList时,可以用~=这个符号来匹配其中的某一项。

因为属性往往是动态的,当属性更改了的时候,需要调整样式表,通常做法是删除样式表,再重新加载
选择器类别

类选择器QPushButton选中所有QPushButton的对象,但不包括其子类
ID选择器QPushButton#okButton选中所有object name是okButton的QPushButton对象
子控件选择器QDialog QPushButton选中Qdialog上的所有QPushButton子控件(直接子控件,间接子控件
嫡子控件选择器QDialog > QPushButton选中所有Qdialog的直接孩子QPushButton精细控制(子控件)

对于比较复杂的控件,往往由多个子控件构成,比如QComboBox则由文本框和下拉按钮构成,对于QT STYLE 允许我们分别对子控件进行样式设定,这就大大增强了样式的灵活性

基本写法:

  • 1、 伪状态和选择器类名之间,用一个冒号分隔。
QPushButton:hover { color: white }
  • 2、伪状态也可以反向选择。例如:当我们要设置除了鼠标悬停状态外其他所有状态的字体颜色,则可以像下面这样设置:

    • QRadioButton:!hover { color: red }
  • 3、伪状态也可以并列,之间用冒号连接,表示伪状态之间用AND计算:

QCheckBox:hover:checked { color: white }

QPushButton:hover:!pressed { color: blue; }
  • 4、伪状态之间可以用OR计算:
QCheckBox:hover, QCheckBox:checked { color:white }
  • 5、伪状态可以和子控件合起来使用:
QComboBox::drop-down:hover { image:url(dropdown_bright.png) }

样式表Style基础知识的说明

我们控制style主要是将style添加到控件上,通过控制控件不同状态的style以达到整体的显示效果

对于控件,我将其分解为以下几部分来理解

从层次上来说:

控件可分为前景与背景

前景:多包含文件,图片等内容

背景:多包含图片,图形等内容

从结构上来说:

由于QT style是模拟CSS的布局结构,因此其满足CSS的盒子模型

从里到外的4个区域分别是:

1: content

2: padding

3: border

4: margin
这里写图片描述

通过控制一个控件的前景,背景内容已经结构上的4个区域,我们就可以达到对一个控件为所欲为的控制

CSS的基本功能

 CSS的强大在于组合功能的强大,这里只是简单介绍基本功能,将简单功能组合起来才能实现好看的效果。

1、CSS背景属性(background)

属性描述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

2、边框属性(Border 和 Outline)

属性描述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-decoration-break3
box-shadow向方框添加一个或多个阴影。3

3、Box 属性

属性描述CSS版本
overflow-x如果内容溢出了元素内容区域,是否对内容的左/右边缘进行裁剪。3
overflow-y如果内容溢出了元素内容区域,是否对内容的上/下边缘进行裁剪。3
overflow-style规定溢出元素的首选滚动方法。3
rotation围绕由 rotation-point 属性定义的点对元素进行旋转。3
rotation-point定义距离上左边框边缘的偏移点。3

4、CSS 字体属性(Font)

属性描述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

5、CSS 外边距属性(Margin)

属性描述CSS版本
margin在一个声明中设置所有外边距属性。1
margin-bottom设置元素的下外边距。1
margin-left设置元素的左外边距。1
margin-right设置元素的右外边距。1
margin-top设置元素的上外边距。1

6、CSS 内边距属性(Padding)

属性描述CSS版本
padding在一个声明中设置所有内边距属性。1
padding-bottom设置元素的下内边距。1
padding-left设置元素的左内边距。1
padding-right设置元素的右内边距。1
padding-top设置元素的上内边距。1

7、CSS 定位属性(Positioning)

属性描述CSS版本
bottom设置定位元素下外边距边界与其包含块下边界之间的偏移。2
clear规定元素的哪一侧不允许其他浮动元素。1
clip剪裁绝对定位元素。2
cursor规定要显示的光标的类型(形状)。2
displa规定元素应该生成的框的类型。1
float规定框是否应该浮动。1
left设置定位元素左外边距边界与其包含块左边界之间的偏移。2
overflow规定当内容溢出元素框时发生的事情。2
position规定元素的定位类型。2
right设置定位元素右外边距边界与其包含块右边界之间的偏移。2
top设置定位元素的上外边距边界与其包含块上边界之间的偏移。2
vertical-align设置元素的垂直对齐方式。1
visibility规定元素是否可见 。2
z-index设置元素的堆叠顺序。

8、CSS 文本属性(Text)

属性描述CSS版本
color设置文本的颜色。1
direction规定文本的方向 / 书写方向。2
letter-spacing设置字符间距。1
line-height设置行高。1
text-align规定文本的水平对齐方式。1
text-decoration规定添加到文本的装饰效果。1
text-indent规定文本块首行的缩进。1
text-shadow规定添加到文本的阴影效果。2
text-transform控制文本的大小写。1
unicode-bidi设置文本方向。2
white-space规定如何处理元素中的空白。1
word-spacing设置单词间距。1
hanging-punctuation规定标点字符是否位于线框之外。3
punctuation-trim规定是否对标点字符进行修剪。3
text-align-last设置如何对齐最后一行或紧挨着强制换行符之前的行。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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值