欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Qss换肤设置

发布时间:2023/12/14 编程问答 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Qss换肤设置 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言:本文大部分的内容来源于同类博客。章节1.1-1.3 摘自参考文档:http://www.th7.cn/web/html-css/201405/37286.shtml。1.4摘自参考文档。https://blog.csdn.net/Staranywhere/article/details/106967756。本文仅用作知识点整理。

目录:

   1.1 Qss的功能及结构

   1.2 QSS基本属性设置

   1.3  Qss过滤选择器和优先级

   1.4 伪状态集合

   1.5 利用动态属性分层次设置

    1.6 代码中加载Qss

    1.7 Qss高亮配置

    1.8 Qss编辑工具

1.1  Qss的功能

Qt程序界面中控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性可以通过Qss文件来设置,美化UI界面。实现界面和程序的分离,快速切换皮肤。

    从层次上来说:

控件可分为前景与背景

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

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

从结构上来说:

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

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

1: content

2: padding

3: border

4: margin

1.2  QSS基本属性设置

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

Qss背景属性(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

QSS边框属性(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-break

�0�2

3

box-shadow

向方框添加一个或多个阴影。

3

Box 属性

属性

描述

CSS

overflow-x

如果内容溢出了元素内容区域,是否对内容的左/右边缘进行裁剪。

3

overflow-y

如果内容溢出了元素内容区域,是否对内容的上/下边缘进行裁剪。

3

overflow-style

规定溢出元素的首选滚动方法。

3

rotation

围绕由 rotation-point 属性定义的点对元素进行旋转。

3

rotation-point

定义距离上左边框边缘的偏移点。

3

QSS字体属性(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

QSS外边距属性(Margin

属性

描述

CSS

margin

在一个声明中设置所有外边距属性

1

margin-bottom

设置元素的下外边距。

1

margin-left

设置元素的左外边距。

1

margin-right

设置元素的右外边距。

1

margin-top

设置元素的上外边距。

1

CSS 内边距属性(Padding

属性

描述

CSS

padding

在一个声明中设置所有内边距属性

1

padding-bottom

设置元素的下内边距。

1

padding-left

设置元素的左内边距。

1

padding-right

设置元素的右内边距。

1

padding-top

设置元素的上内边距。

1

CSS 定位属性(Positioning

属性

描述

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

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

1.3  Qss过滤选择器和优先级

1.3.1            Qss选择器

Qss有一些规则用来设置符合规则的控件名称,通常是按照通用属性设置一类控件,对某个有特殊要求的在特别设置。避免大量的重复设置。分为

  • 通配选择器:*  ;所有的控件属性设置
  • *

    {

    }

  • 类型选择器:QPushButton ; 匹配所有QPushButton和其子类的实例
  • QPushButton

    {

    }

    3.类选择器:  .QPushButton ;  匹配所有QPushButton的实例,但是并不匹配其子类。这是与CSS中的类选择器不一样的地方,注意前面有一个点号

    .QPushButton

    {

    }

    4.属性选择器:QPushButton[flat="false"]; 匹配所有flat属性是false的QPushButton实例,注意该属性可以是自定义的属性,不一定非要是类本身具有的属性

    QPushButton[flat="false"]

    {

    }

    5.ID选择器:  #myButton; 匹配所有id为myButton的控件实例,这里的id实际上就是objectName指定的值,针对特定名称的控件设置属性。

    QPushButton#myButton1, #myButton2

    {

    }

    6.后代选择器: QDialog QPushButton ; 所有QDialog容器中包含的QPushButton,不管是直接的还是间接的。

    QDialog QPushButton

    {

    }

    7.子选择器:  QDialog > QPushButton; 所有QDialog容器下面的QPushButton,其中要求QPushButton的直接父容器是QDialog

    QDialog > QPushButton

    {

    }

    1.4伪状态集合

    :active此状态在小部件驻留在活动窗口时设置
    :adjoins-item此状态在QTreeView的::branch与一个item相邻时设置
    :alternate当QAbstractItemView::alternatingRowColors()设置为真时,在绘制QAbstractItemView的行时,为每个交替行设置此状态
    :bottom此item位于底部。例如,QTabBar有位于底部的选项卡
    :checked此item被选中。例如,QAbstractButton的checked状态
    :closable此item可以被关闭。例如,QDockWidget的QDockWidget::DockWidgetClosable特性开启时
    :closed此item处于关闭状态。例如,QTreeView中未展开的item
    :default此item的默认状态。例如,一个default的QPushButton或QMenu中的一个默认动作
    :disabled此item被禁用
    :editable如QComboBox是可编辑的
    :edit-focus此item具有编辑焦点(参考QStyle::State_HasEditFocus)。此状态仅对Qt扩展应用程序可用
    :enabled此item已启用
    :exclusive此item是一个独占项组的一部分。例如,独占QActionGroup中的菜单项
    :first此item是列表中的第一项。例如,QTabBar中的第一个选项卡
    :flat此item是平的。例如,一个扁平的QPushButton
    :floatable此item可以浮动。例如,QDockWidget的QDockWidget::DockWidgetFloatable的特性开启时
    :focus此item具有输入焦点
    :has-children此item具有子对象。例如,QTreeView中具有子项的项
    :has-sibling此item具有兄弟对象。例如,QTreeView中与之相邻的项
    :horizontal此item处于水平方向
    :hover鼠标悬浮在此item上
    :indeterminate此item处于不确定状态。例如,QCheckBox或QRadioButton被部分选中
    :last此item是列表中的最后一项。例如,QTabBar中的最后一个选项卡
    :left此item位于左侧。例如,QTabBar有位于左侧的选项卡
    :maximized此item处于最大化状态。例如,一个最大化的QMdiSubWindow
    :middle此item是列表中的中间一项。例如,一个不在QTabBar中的开头或结尾的选项卡
    :minimized此item处于最小化状态。例如,一个最小化的QMdiSubWindow
    :movable此item可以被移动。例如, QDockWidget的QDockWidget::DockWidgetMovable特性开启时
    :no-frame此item没有边框。例如,没有边框的QSpinBox或QLineEdit
    :non-exclusive此item是一个非独占项组的一部分。例如,非独占QActionGroup中的菜单项
    :off对可以切换的items,这适用于处于off状态的item
    :on对可以切换的items,这适用于处于on状态的widget
    :only-one此item是列表中的唯一的一项。例如,一个在QTabBar中单独的选项卡
    :open此item处于打开状态。例如,QTreeView中的展开项,或带有菜单的QComboBox或QPushButton
    :next-selected此item是列表中的下一个被选中的项。例如,在QTabBar中当前选项卡的下一个要选中的选项卡
    :pressed鼠标正在按压在此item上
    :previous-selected此item是列表中的上一个被选中的项。例如,在QTabBar中当前选项卡的上一个要选中的选项卡
    :selected此item处于选中状态。例如,一个在QTabBar中被选中的选项卡或一个在菜单中被选中的菜单项
    :top此item位于顶部。例如,QTabBar有位于顶部的选项卡
    :unchecked此item处于未被选中状
    :vertical此item处于垂直方向
    :window小部件是一个窗口(例如,一个顶层小部件)

     1.5 利用动态属性分层次设置

         为控件添加动态属性,利用属性选择器。对界面进行分层次设置皮肤。

         界面色彩一般分为:主色(EssentialColour),辅助色(ComplementaryColors)

         点缀色(OrnamentColour),中性色(NeutraColourl)。因此一般为界面控件添加四种动态属性。

         各种色彩对应界面部分:

         主色:顶部标题栏和背景色

         辅助色:为主色临近色或同系色。各子个模块颜色

         点缀色:为主色的互补色,对标题或模块进行装饰。如边框花边

         中性色:以主色为色基的中性色。一般为文字。

         例:QMinWidno[EssentialColour=true]{background:#7F9AB8}(主色)

                QWidget[ComplementaryColors=true]{background:#7F9AB8}(辅助色)

                QWidget[OrnamentColour=true]{background:#7F9AB8}(点缀色)

                QWidget[NeutraColourl=true]{background:#7F9AB8}(中性色)

    1.6 代码中加载Qss:main.cpp中添加

    QString qss;
    QFile qssFile(pStyleSheet);       
    qssFile.open(QFile::ReadOnly);   
    if(qssFile.isOpen()){ 
       qss = QObject::tr(qssFile.readAll()); 
       qApp->setStyleSheet(qss); 
       qssFile.close(); 
    }

    1.7 Qss高亮配置

  • 进入:工具 -> 选项 -> 环境 -> MIME 类型。

  • 在【已注册的MIME类型】处输入“text/css”可以快速定位,然后在【详情】中的“模式”处添加 *.qss,即将原来的“模式”改为:*.css;*.CSSL;*.qss。

    注意:中间用分号(;)分隔

  • 高亮

    重新打开 qss 文件就可以高亮显示了

    1.8 Qss 编辑工具

         为什么要使用qss编辑工具?这是因为qt creater中编辑样式后,不能实时查看编辑效果,导致调整控件样式时效率极低。利用一款qss 编辑工具将样式快速编辑好并导出qss文件,这样能大大提高效率。推荐使用QssEditor编辑工具对qss进行编辑。作者:dmitrykx,是Qt4的开发者。qss editor 能高亮显示关键字,实时查看编辑效果,能导出qss文件。

         资源地址:https://download.csdn.net/download/zeng675147/19952932?spm=1001.2014.3001.5501

    总结

    以上是生活随笔为你收集整理的Qss换肤设置的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。