Qss换肤设置

article/2025/9/28 22:28:05

前言:本文大部分的内容来源于同类博客。章节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有一些规则用来设置符合规则的控件名称,通常是按照通用属性设置一类控件,对某个有特殊要求的在特别设置。避免大量的重复设置。分为

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

*

{

}

  1. 类型选择器: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高亮配置

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

  2. 在【已注册的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


http://chatgpt.dhexx.cn/article/wls3kAGM.shtml

相关文章

qss之QRadioButton

先来个示例 QRadioButton {font-family: "Microsoft YaHei";font-size: 14px;color: #BDC8E2;background-color: #2E3648; }效果图如下: 上面的例子是基本的样式设置,下面我们将探讨 QRadioButton 各种样式设置: 字体样式 font…

QSS的使用

QSS官方文档:https://doc.qt.io/qt-5/stylesheet-reference.html 图标制作例子: normal hover press disable 图标制作 按钮设计指南 按钮多态的几种方法 一、程序应用qss文件 QString qssPath QString("%1/stylesheet/style.qss").arg(a.applicationD…

QSS属性大全

1、选择器 1.1、通用选择器 /* 格式:* { 属性: 值; } 通用选择器一般用来给应用程序设置统一的字体,大小,颜色等 */ * {font-family: "Microsoft YaHei";outline: 0px;color: #DCDCDC; }1.2、类型选择器 /* 格式: 类…

Qt之QSS使用与基本语法

一、QSS介绍 QSS是一种从CSS借鉴过来的机制,用来实现对控件外观的自定义。但是它比CSS功能要弱化一些,有一些属性和选择器,QSS并没有。 Qt中的各个控件可以使用QSS来实现界面的个性化定制、美化,使用起来也是特别方便的。 二、Q…

QTreeWidget样式qss

文章目录 QTreeWidget/QTreeView样式QHeaderView背景属性alternate-background-color:交替背景色background:背景属性background-color:控件的背景色background-image:用于控件的背景图像。如果图像有透明部分则显示透明部分。bac…

qss文件使用

每个控件提供的样式太少?只能简单的设置颜色、字体颜色、字体大小?每次设置都要输入好长一串好麻烦? 现在你只要写一段qss就能满足你的一切需求,实现效果如下 本文将从下面三个方向慢慢阐述qss的使用 1、如何使用qss 2、如何修…

QSS 基础

如果你会 CSS,那么 QSS 对你来说将会非常简单,QSS 的语法和 CSS 的愈发非常相似,但也有些不同,有些 CSS 的东西在 QSS 里被去掉了,QSS 也加了些自己特有的东西,不过大多数还是差不多的,下面以修…

Qt QSS使用

一、选择器类型 Qt QSS选择器和CSS2、CSS3的选择器类似,建议先学习或者复习一下CSS选择器的语法。QSS虽然和CSS类型,但有也稍许不同,而且支持的语法也没那么多,具体讲解如下。 1.1 类选择器 /* 匹配QPushButton的实例及其子类 …

QSS 介绍

目录 一、自定义 widget 的两种方式二、一个简单示例三、QSS 比 QPalette 强大四、使用 Qt Designer 方便查看 qss 效果 一、自定义 widget 的两种方式 自定义 widget 外观的方式有两种: 子类化 QStyle;使用 Qt Style Sheets 机制; Qt Sty…

学习QSS样式表

文章目录 一、 什么是QSS二、辅助工具三、Qt样式表设置函数:setStyleSheet四、Qss选择器1、通用选择器2、类型选择器3、类选择器4、ID选择器5、后代选择器6、子元素选择器7、属性选择器8、并集选择器9、子控件选择器10、伪类选择器11、选择器的匹配规则 五、QSS常用…

QSS自定义属性

1.基本使用 &#xff08;参见 Qt 文档页章节 Setting QObject Properties&#xff1a;https://doc.qt.io/qt-5/stylesheet-syntax.html&#xff09; 从 Qt 4.3 及更高版本开始&#xff0c;可以使用 qproperty- <属性名称> 语法设置任何 designable 的 Q_PROPERTY &…

QSS

摘自&#xff1a;https://qtdebug.com/qtbook-qss/ Qt 提供的 widget 的默认外观很多时候都不符合项目的界面需求&#xff0c;必须要改&#xff0c;修改一个 widget 的外观&#xff08;Look and Feel&#xff09;有以下的方法&#xff1a; 继承 Widget&#xff0c;然后在 pai…

QSS 语法

目录 1. 基本语法1.1 样式规则1.2 选择器、声明1.3 大小写1.4 多个选择器 2. 选择器2.1 通用选择器&#xff1a;*2.2 类型选择器&#xff1a;QPushButton2.3 属性选择器&#xff1a;QPushButton[flat"false"]2.4 类选择器&#xff1a;.QPushButton2.5 ID 选择器&…

QSS(Qt样式表)概念

Qt样式表是一个可以自定义部件外观的十分强大的机制&#xff0c;除了QStyle更改的样式&#xff0c;其他的都可以由QSS修改。由于受到Html的CSS启发&#xff0c;所以叫QSS。 代码添加样式表ui界面上添加样式表 代码添加样式表&#xff1a; setStyleSheet&#xff08;&#xff0…

【QT】QSS使用总结

文章目录 主要流程&#xff1a;导入QSS文件&#xff1a;1. 添加Qt Resource File文件&#xff0c;输入名称2. 在工程文件目录下先建一个".txt"文件&#xff0c;重新命名后缀为".qss"3. 右键添加现有文件qss.qss4. 完成添加5. 将 qss样式应用到整个工程 QSS…

01_1_Qt工程实践_Qt样式表Qss(什么是QSS;基本语法;setStyleSheet函数;样式表的属性值;利用QtCreate实现样式切换;样式表实现皮肤改变实例)

本篇介绍什么是样式表&#xff0c;讨论如何使用Qt样式表Qss修改应用程序外观&#xff0c;并通过实例进行讲解。 了解HTML的同学都知道&#xff0c;一般在HTML中我们把样式表叫做CSS&#xff0c;在Qt中我们称之为QSS。QSS和CSS并不完全等同&#xff0c;语法完全类似&#xff0c…

【QT】QSS美化——基础知识

目录 一、辅助工具 二、QSS加载方式 三、QSS选择器类型 3.1 通配选择器 3.2 类型选择器 3.3 属性选择器 3.4 类选择器 3.5 ID选择器 3.6 后代选择器 3.7 子选择器 3.8 伪类选择器 四、QSS常用属性 4.1 字体 4.2 颜色 4.3 内边距 4.4 外边距 4.5 背景 4.6 边框…

在没有QQ、微信时局域网共享文件方法

1、首先开启共享 2、将要共享文件的电脑做同样操作 查看局域网下电脑 点击要访问的电脑输入该电脑的账号密码进行登录。 3、选择要共享的文件和访问权限 在要共享文件的电脑选择要共享的文件右键-授予访问权限-家庭组 然后选特定用户-everyone即可。 之后就是在这个文件里面…

分享:我的局域网QQ Bing(必应)1.0 正式发布,包括:聊天、视频、语音、电话、截屏、文件传输 等

分享&#xff1a;我的局域网QQ Bing&#xff08;必应&#xff09;1.0 正式发布,包括&#xff1a;聊天、视频、语音、电话、截屏、文件传输 等 百万商业圈 局域网QQ Bing&#xff08;必应&#xff09;1.0 正式发布 Bing&#xff08;必应&#xff09;是一款优秀的企业局域网即时…

交换机组建局域网

说来惭愧&#xff0c;今天才搞明白用交换机组建局域网的原理&#xff0c;这里介绍方法&#xff1a; 平时使用的路由器有交换机的功能&#xff0c;单纯使用交换机还是第一次&#xff1a; 1、将所有电bai脑连到同一台交换机上&#xff0c;du即将各台电zhi脑的网线插入同一dao台交…