【QT】 QSS样式表设计一文了解

news2025/2/26 5:10:52

很高兴在雪易的CSDN遇见你 ,给你糖糖

欢迎大家加入雪易社区-CSDN社区云 


前言

本文分享QT界面设计中的QSS样式技术,主要从**、**和**方面展开,希望对各位小伙伴有所帮助!学会了QSS样式设计,就可以开动你的审美,制作出令人羡慕的软件界面了。

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的点赞就是我的动力(^U^)ノ~YO

我将收获到的:

        1. QT样式表的语法及用法

        2. 常见的伪状态和属性列表

        3.常用好用的网址推荐

目录

前言

1. Qt样式表 语法

2. Qt样式表 用法

3. selector设置

》selector类型说明        

》selector控件的可设置样式

》selector访问子控件

》selector设置伪状态

4. 属性列表

5. QT官方参考网站 

6. 常见冲突(样式不生效原因)

结论:


1. Qt样式表 语法

        》语法:selector { attribute: value }

        》其中,selector可以是控件类型,控件名称等,如QLineEdit, #lineEdit_1;

                      attribute:属性,如color、border、background等

                      value:值,属性设置的值

2. Qt样式表 用法

        》使用setStyleSheet,如

    qApp->setStyleSheet("QLineEdit { background-color: yellow }");
    myDialog->setStyleSheet("QLineEdit { background-color: yellow }");

        》ui文件里的StyleSheet,如 

         》QSS文件

    QFile file(":/res/dark.qss");/*QSS文件所在的路径*/
    file.open(QFile::ReadOnly);
    QTextStream filetext(&file);
    QString stylesheet = filetext.readAll();
    this->setStyleSheet(stylesheet);
    file.close();

3. selector设置

》selector类型说明        

选择器示例说明
通用选择器*匹配所有部件
类型选择器QPushButton匹配所有QPushButton示例及它的所有子类
属性选择器QPushButton[flat = “false”]匹配QPushButton的属性flat为false的示例
类选择器.QPushButton匹配所有QPushButton示例,但不包括它的子类
ID选择器QPushButton#myButton匹配所有QPushButton中myButton对象的实例
后代选择器QDialog QPushButton匹配所有QPushButton实例,它们必须是QDialog的子孙部件
孩子选择器QDialog>QPushButton匹配所有QPushButton实例,它们必须是QDialog直系孩子部件

》selector控件的可设置样式

        具体各控件的可设置样式请在以下文章中查找Qt界面设计_雪易的博客-CSDN博客

》selector访问子控件

        示例如下,

            QTabWidget::pane{ /* The tab widget frame */
                border: 1px solid #00BB9E;
                border - radius:5px;
            
            }
            
            QTabWidget::tab - bar{
                alignment: left;
            }

        具体各控件的子控件请在以下文章中查找Qt界面设计_雪易的博客-CSDN博客

》selector设置伪状态

        》选择器可以使用状态来限制在部件的指定状态上的应用。 伪状态在选择器之后,用冒号隔离。如:鼠标悬停在按钮上时其按钮的颜色为白色:QPushButton:hover{color:white}
鼠标不悬停在按钮上时其按钮的颜色为l蓝色(!表否定):QPushButton:!hover{color:blue}

        》伪状态可多个连用,达到逻辑与效果。如:鼠标悬停在一个被选中的QCheckBox部件上时才应用规则:QCheckBox:hover:checked{color:white}

        》伪状态可通过逗号达到逻辑或效果。如:QCheckBox:hover,checked{color:white}

        》伪状态和子部件联合使用。如:QComboBox::drop-down:hover{image:url(dropdown_bright.png)}

伪状态描述
: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中当前选项卡的上一个要选中的选项卡

:read-only

此item处于只读或不可编辑状态。

例如,一个只读QLineEdit或不可编辑的QComboBox

:right此item位于右侧。例如,QTabBar有位于右侧的选项卡
:selected

此item处于选中状态。

例如,一个在QTabBar中被选中的选项卡或一个在菜单中被选中的菜单项

:top此item位于顶部。例如,QTabBar有位于顶部的选项卡
:unchecked此item处于未被选中状态
:vertical此item处于垂直方向
:window小部件是一个窗口(例如,一个顶层小部件)

4. 属性列表

         常见的属性如下

attribute属性类型描述
alternate-background-colorBrush交替背景色。
backgroundBackground背景,相当于指定background-color、background-image、background-repeat和background-position。
background-colorBrush背景颜色,例如:
background-imageUrl背景图像(图像的半透明部分会被背景颜色穿透)。
background-repeatRepeat

背景图像如何充满背景矩形,

如果未指定此属性,背景图像将在两个方向上重复(repeat)。

background-positionAlignment

背景图像在背景原点矩形内的对齐。

如果未指定此属性,则对齐方式为左上角。

background-attachmentAttachment

背景图像是否相对于视口进行滚动或固定。

默认情况下,背景图像随视口滚动。

background-clipOrigin规定背景的绘制区域。如果未指定此属性,则默认为border。
border:背景被裁剪到边框盒
padding:背景被裁剪到内边距框
content:背景被裁剪到内容框
background-originOrigin背景图像相对于什么来定位。如果未指定此属性,则默认为 padding 填充。
padding:背景图像相对于内边距框来定位
border:背景图像相对于边框盒来定位
content:背景图像相对于内容框来定位
borderBorder

设置 4 个边框的样式,

按照一下顺序进行设置:

border-width,border-style,border-color。

border-topBorder顶部边框
border-bottomBorder底部边框
border-rightBorder右边边框
border-leftBorder左边边框
border-colorBox Colors边框的颜色。
border-top-colorBrush边框上边缘颜色
border-bottom-colorBrush边框下边缘颜色
border-right-colorBrush边框右边缘颜色
border-left-colorBrush边框左边缘颜色
border-imageBorder Image填充边框的图像
border-radiusRadius边角的半径,即边角圆弧。
border-top-left-radiusRadius左上角圆弧
border-top-right-radiusRadius右上角圆弧
border-bottom-right-radiusRadius右下角圆弧
border-bottom-left-radiusRadius左下角圆弧
border-styleBorder Style边框边缘的样式,若未指定默认为none。
border-top-styleBorder Style边框上边缘的样式
border-bottom-styleBorder Style边框下边缘的样式
border-right-styleBorderStyle边框右边缘的样式
border-left-styleBorderStyle边框左边缘的样式
border-widthBox Lengths边框的宽度。
border-top-widthBox Lengths上边框的宽度
border-bottom-widthBox Lengths下边框的宽度
border-right-widthBox Lengths右边框的宽度
border-left-widthBox Lengths左边框的宽度
bottomLength

在部件边底部其子控件向上的偏移量,

即元素与底部边缘的距离。

topLength

在部件边顶部其子控件向下的偏移量,

即元素与顶部边缘的距离。

rightLength

在部件右边其子控件向左的偏移量,

即元素与右边缘的距离。

leftLength

在部件左边其子控件向右的偏移量,

即元素与左边缘的距离。

button-layoutNumber

QDialogButtonBox或QMessageBox中的按钮布局。取值为0 (WinLayout)、1 (MacLayout)、2 (KdeLayout)、

3 (GnomeLayout)和5 (AndroidLayout)。

如果未指定此属性,

它默认为SH_DialogButtonLayout样式提示的

当前样式所指定的值。

colorBrush渲染文本的颜色,默认值为黑色。
dialogbuttonbox-buttons-have-iconsBoolean

QDialogButtonBox中的按钮是否显示

图标如果这个属性被设置为1,

QDialogButtonBox的按钮显示图标;

如果设置为0,则不显示图标。

fontFont

设置字体。相当于指定font-family、

font-size、font-style和/或font-weight。

font-familyString字体类型。
font-sizeFont Size字体大小。
font-styleFont Style字体风格(倾斜)。
font-weightFont Weight字体的粗细。
gridline-color*Color

QTableView中网格线的颜色。

如果没有指定此属性,

它默认为SH_Table_GridLineColor样式提示的

当前样式所指定的值。

heightLength

子部件的高度。如果希望小部件具有固定的高度,

请将min-height和max-height设置为相同的值。

widthLength子控件(在某些情况下是小部件)的宽度。
iconUrl+

所使用的图标,用于具有图标的小部件。

目前唯一支持此属性的小部件是QPushButton。

icon-sizeLength

小部件中图标的宽度和高度。

可以使用此属性设置以下小部件的图标大小:QCheckBox、QListView、QPushButton、QRadioButton、QTabBar、QToolBar、QToolBox、QTreeView。

image*Url+

在子控件的内容矩形中绘制图像。

image属性接受一个url列表或者一个svg。

绘制的实际图像使用与QIcon相同的算法。

图像从不放大,但在必要时总是缩小。

如果指定了svg,则图像会被缩放为内容矩形的大小。

警告:渲染SVG图像需要QIcon SVG插件。

隐式设置down-button的大小为spindown.png的大小  
image-positionAlignment图像位置的对齐方式
lineedit-password-character*Number

QLineEdit密码字符作为Unicode数字。

如果没有指定此属性,

它默认为SH_LineEdit_PasswordCharacter样式

提示的当前样式所指定的值。

lineedit-password-mask-delay*Number

在lineedit-password-character应用到可见字符之前,

QLineEdit密码掩码延迟毫秒。

如果未指定此属性,

它默认为SH_LineEdit_PasswordMaskDelay

样式提示的当前样式所指定的值。

marginBox Lengths设置元素的4个外边距。相当于指定margin-top、margin-right、margin-bottom和margin-left。
margin-topLength上边距
margin-rightLength右边距
margin-bottomLength下边距
margin-leftLength左边距
max-heightLength小部件或子控件(例如Item)的最大高度。
max-widthLength小部件或子控件(例如Item)的最大宽度。
min-heightLength小部件或子控件(例如Item)的最小高度。
min-widthLength小部件或子控件(例如Item)的最小宽度。
messagebox-text-interaction-flags*Number

消息框中文本的交互行为。可能的值基于Qt::TextInteractionFlags。如果未指定此属性,

则默认为SH_MessageBox_TextInteractionFlags样式

提示的当前样式所指定的值。

opacity*Number

小部件的不透明度。取值范围为0(透明)~ 255(不透明)。

目前,这只支持tooltips。如果未指定此属性,它默认为SH_ToolTipLabel_Opacity样式提示的当前样式指定的值。

outline 边框的轮廓
outline-colorColor轮廓的颜色
outline-offsetLength轮廓与小部件边界的偏移量
outline-style 指定用于绘制轮廓的模式
outline-radius 在轮廓中添加圆角
outline-bottom-left-radiusRadius轮廓左下角的圆角
outline-bottom-right-radiusRadius轮廓右下角的圆角
outline-top-right-radiusRadius轮廓右上角的圆角
outline-top-left-radiusRadius轮廓左上角的圆角
paddingBox Lengths

小部件的填充。

相当于指定填充顶部、填充右侧、填充底部和填充左侧。

如果未指定此属性,则默认为0。

padding-topLength顶部填充
padding-rightLength右侧填充
padding-bottomLength底部填充
padding-leftLength左侧填充
paint-alternating-row-colors-for-empty-areaboolQTreeView是否为空区域(即没有项目的区域)绘制交替的行色
posotionrelative | absolute

使用左、右、上和下指定的偏移量是相对坐标还是绝对坐标。

如果未指定此属性,则默认为relative。

selection-background-color*Brush

所选文本或项的背景。如果未设置此属性,

则默认值是为调色板palette的Highlight角色设置的值。

selection-color*Brush

所选文本或项的前景。如果未设置此属性,

则默认值是为调色板palette的HighlightedText角色设置的值。

show-decoration-selected*Boolean

控制QListView中的选择是覆盖整行还是仅覆盖文本的范围。

如果未指定此属性,它默认为SH_ItemView_ShowDecorationSelected样式

提示的当前样式指定的值。

spacing*Length小部件中的内部间距。
subcontrol-origin*Origin

父元素中子控件的起始矩形。如果未指定此属性,

则默认为填充。

subcontrol-position*Alignment

子控件在subcontrol-origin指定的原点矩形内的对齐。

如果未指定此属性,则默认为依赖于子控件的值。

titlebar-show-tooltips-on-buttonsbool工具提示是否显示在窗口标题栏按钮上。
widget-animation-duration*Number

动画应该持续多长时间(以毫秒为单位)。

值等于零意味着动画将被禁用。

如果没有指定此属性,

它默认为SH_Widget_Animation_Duration样式

提示的当前样式指定的值。

text-alignAlignment小部件内容中的文本和图标的对齐方式。
text-decorationnone
underline
overline
line-through
附加文本效果
-qt-background-rolePaletteRole基于所选角色的子控件或小部件的背景色。
-qt-style-featureslist

要在其上应用特定于qt的样式的CSS属性列表。

注意:列表只能包含非基于像素图的属性。

5. QT官方参考网站 

Qt Style Sheets Reference | Qt Widgets 6.5.2

Qt Widgets 6.5.2

Qt Style Sheets Examples | Qt Widgets 5.15.14

QSS在线测试CSS background-clip 属性 (w3school.com.cn)

6. 常见冲突(样式不生效原因)

        》 多次设置样式,造成以为新设置的样式不生效

        》父级设置样式会覆盖子级设置的样式

结论:

        本文主要介绍了QT样式表的语法、用法、selector的设置、属性列表及QT官方的参考网站!

希望对各位QTUI爱好者一点点帮助!

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的赞赏是我的最最最最大的动力(^U^)ノ~YO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/862894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【腾讯云 Cloud Studio 实战训练营】基于Python实现的快速抽奖系统

文章目录 ⭐️ Cloud Studio - 简介🌟 操作步骤🌟 注册Cloud Studio🌟 创建工作空间🌟 启动对应的开发环境 ⭐️ 抽奖系统项目介绍⭐️ 抽奖系统代码结构图⭐️ 项目基础类 - 文件检查🌟 base.py 基础类文件检查示例如…

【踩坑系列记录 】Anaconda环境将torch由cpu换成gpu

概要 很早前做过深度学习,配环境之类的坑由于没记录都记不清了。这段时间开始做深度学习的项目,于是用Anaconda给项目创建了一个环境,其他的环境配置很顺利,就是到了安装pytorch时,我用pytorch官网的代码一直下载的是…

法学领域的技术创新点

文章目录 一、中国法研杯-2019方案分享1 相似案件检索——法律文书的相似判断方案1 -冠军方案2——三等奖 2 裁判文书论辩挖掘 二、中国法研杯2018总述Overview of CAIL2018: Legal Judgment Prediction Competition 三、中国法研杯2022-任务概述事件检测文书校对类案检索司法摘…

对留学生来说,ChatGPT究竟是福是祸?

ChatGPT,“出道即顶流”。教师们防ChatGPT如洪水猛兽,学生们使用起来依然肆无忌惮。抄袭、作弊、代写……围绕着ChatGPT的争议不绝于耳。其堪比人类的流畅写作技能和逻辑思维,更引发一些人的担忧:ChatGPT会终结大学申请文书时代吗…

智能离子风棒联网监控静电消除器的主要功能和特点

智能离子风棒联网监控静电消除器是一种集成了智能化和网络化监控功能的设备,用于监测和消除静电现象。它的工作原理是通过产生大量的正负离子,将空气中的静电中和和消除,从而达到防止静电积累和放电的目的。 智能离子风棒联网监控静电消除器的…

无涯教程-Perl - last函数

描述 这不是功能。 last关键字是一个循环控制语句,该语句立即导致循环的当前迭代变为最后一个。不再执行任何语句,循环结束。如果指定了LABEL,则它将退出LABEL标识的循环,而不是当前封闭的循环。 语法 以下是此函数的简单语法- last LABELlast返回值 这不会返回任何值。 …

米家/南卡/松下/明基哪款护眼台灯最值得入手?(附护眼台灯选购技巧)

写这篇文章的时候,我总有种悔不当初的痛感:上学时只喜欢造型好看的台灯,总是把老妈买的护眼灯丢在一边,导致现在眼睛高度近视。 虽然不念书了,但平日使用电脑浏览信息、阅读纸质书仍是抛弃不掉的生活习惯,…

【Java】产生死锁的必要条件和如何避免死锁

首先我们先简单了解一下什么是死锁 我们模拟A,B是两个资源,而下面是两个要抢占资源的任务 首先左边的任务执行,抢占了A的锁资源 当他想拿继续执行任务,拿B的锁资源的时候,B的资源被右边的任务抢走了 这时候我们应该…

OCP China Day 2023:五大社区齐聚,加速开源开放创新与落地

8月10日,2023年开放计算中国社区技术峰会(OCP China Day 2023)在北京举行。智慧时代,计算多元化、应用多样化、技术复杂化正驱动数据中心新一轮变革,开源开放社区已成为推动数据中心持续创新的重要力量,通过…

YOLOv5、YOLOv8改进:添加ShuffleAttention注意力机制

广泛应用的注意力机制主要有空间注意力机制和通道注意力机制,其目的分别是捕捉像素级的成对关系和通道依赖关系。虽然将两种机制融合在一起可以获得比单独更好的性能,但计算开销不可避免。因而,本文提出Shuffle Attetion,即SA&…

力扣:59. 螺旋矩阵 II(Python3)

题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全…

【1572. 矩阵对角线元素的和】

来源:力扣(LeetCode) 描述: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3]…

AtCoder Beginner Contest 313D题题解

文章目录 [ Odd or Even](https://atcoder.jp/contests/abc313/tasks/abc313_d)问题建模问题分析1.分析每次查询的作用2.利用异或运算的性质设计查询方法 Odd or Even 问题建模 有n个数,每个数为0或者1,最多可以进行n次询问,每次询问选择k个…

第04天 Spring是如何解决循环依赖的

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

推出稳定代码:人工智能辅助编码的新视野

推荐:使用 NSDT场景编辑器 快速助你搭建可二次编辑的3D应用场景 在不断发展的软件开发环境中,对效率和可访问性的追求导致了各种工具和平台的创建。最新的创新之一是StableCode,这是Stability AI的大型语言模型(LLM)生…

Flv格式视频怎么转MP4?视频格式转换方法分享

FLV格式的视频是一种早期的视频格式,不支持更高的分辨率和比特率,这意味着视频的清晰度和质量受限制,无法很好地保留细节和质量,这种格式的视频已经逐渐被更高质量的视频格式所替代,例如MP4格式,不仅具有很…

创新不辍,再结硕果 | 蓝奥声“无线联动监控技术”

随着无线电通信技术的迅速发展,无线远程监控系统也得到了技术上的更新,它将嵌入式产品与现代无线通信技术相结合,共同构成了一种新型的监测控制系统。物联网及其相关无线联动通信技术是智能科技快速发展的重要支撑技术之一,由此带…

主流国产GPU产品及规格概述(2023)

​ 美国对 AI 芯片出口管制,自主可控要求下国产芯片需求迫切。2022 年 10 月 7 日美国商务部工业安全局(BIS)发布《美国商务部对中华人民共和国(PRC)关于先进计算和半导体实施新的出口管制制造》细则,其中管…

复古游戏库管理器RomM

什么是 RomM ? RomM(代表 Rom Manager)是一个专注于复古游戏的游戏库管理器。通过 Web 浏览器管理和组织您的所有游戏。受 Jellyfin 的启发,允许您从现代界面管理所有游戏,同时使用 IGDB 元数据丰富它们。 RomM 支持的…

电脑自动重启是什么原因?这几个原因不可忽视!

“感觉我的电脑也没有用多久呀,怎么总是会出现自动重启的情况呢?由于我对电脑不是很熟悉,都不知道该如何解决这个问题,有没有朋友可以解释一下这是为什么呀?“ 在使用电脑时,如果电脑总是自动重启&#xff…