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

article/2025/9/29 0:07:51

目录

一、辅助工具

二、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 边框

4.7 宽高

五:QSS伪状态与子控件


一、辅助工具

QSS官方:Qt Style Sheets Reference | Qt Widgets 5.15.8

CSS参考手册:CSS 参考手册

样式编辑器,源码地址:https://github.com/hustlei/QssStylesheetEditor

皮肤生成器,源码地址:https://github.com/satchelwu/QSS-Skin-Builder

素材库,阿里矢量图:iconfont-阿里巴巴矢量图标库

二、QSS加载方式

方式一:

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

方式二:

QFile file(":/qss/main.qss");
file.open(QFile::ReadOnly);
QTextStream filetext(&file);
QString stylesheet = filetext.readAll();
this->setStyleSheet(stylesheet);
file.close();

三、QSS选择器类型

3.1 通配选择器

  *  

  匹配所有的控件


3.2 类型选择器

  QPushButton 

  匹配所有QPushButton和其子类的实例

QPushButton {background: gray;}


3.3 属性选择器

   QPushButton[flat="false"]

   匹配所有flat属性是false的QPushButton实例,注意该属性可以是自定义的属性,不一定非要是类本身具有的属性

QPushButton[level='dangerous'] { background: magenta; }
/*openButton->setProperty("level",  "dangerous");*/


3.4 类选择器

 .QPushButton 

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

.RedButton { background: magenta; }/*
openButton->setProperty("class",  "RedButton");
closeButton->setProperty("class", "RedButton");
*/


3.5 ID选择器

  #myButton

 匹配所有id为myButton的控件实例,这里的id实际上就是objectName指定的值

#openButton, #closeButton { background: magenta; }


3.6 后代选择器

   QDialog QPushButton

   所有QDialog容器中包含的QPushButton,不管是直接的还是间接的

QDialog {background: gray;}
/* 设置 QDialog中的 QPushButton 的 QSS */
QDialog QPushButton {border: 2px solid magenta;border-radius: 10px;background: white;padding: 2px 15px;
}


3.7 子选择器

  QFrame> QPushButton

   所有QFrame容器下面的QPushButton,其中要求QPushButton的直接父容器是QFrame,注意和后代选择器的区别

QFrame {background: gray;}
QFrame > QPushButton {border: 2px solid magenta;border-radius: 10px;background: white;padding: 2px 15px;
}

3.8 伪类选择器

选择器:状态 作为选择器,支持 ! 操作符,表示 非。

QPushButton:hover { color: white }
QCheckBox:checked { color: white }
QCheckBox:!checked { color: red }

所有的这些选择器可以联合使用,并且支持一次设置多个选择器类型,用逗号隔开,这点与CSS一样,例如:

#frameCut,#frameInterrupt,#frameJoin 表示所有这些id使用一个规则。

#mytable  QPushButton 表示选择所有id为mytable的容器下面的QPushButton实例

四、QSS常用属性

4.1 字体

大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD

样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常)

行高 {line-height: normal;}(正常) 单位:PX、PD、EM

粗细 {font-weight: bold;}(粗体) lighter;(细体) normal;(正常)

变体 {font-variant: small-caps;}(小型大写字母) normal;(正常)

大小写 {text-transform: capitalize;}(首字母大写) uppercase;(大写) lowercase;(小写) none;(无)

修饰 {text-decoration: underline;}(下划线) overline;(上划线) line-through;(删除线) blink;(闪烁)

字体名:

微软雅黑:

Microsoft YaHei

宋体:SimSun

黑体:SimHei

仿宋: FangSong

楷体:  KaiTi

隶书:LiSu

幼圆:YouYuan

华文细黑:STXihei

华文楷体:STKaiti

华文宋体:STSong

华文中宋:STZhongsong

华文仿宋:STFangsong

方正舒体:FZShuTi

方正姚体:FZYaoti

华文彩云:STCaiyun

华文琥珀:STHupo

华文隶书:STLiti

华文行楷:STXingkai

华文新魏:STXinwei

font: 15px "Segoe UI";             /* 字体:大小 名称 */  font-family: "Segoe UI";           /* 字体名称 */  

4.2 颜色

17种标准色:aqua, black, blue, fuchsia, gray, green, lime, maroon, navy,olive, orange, purple, red, silver, teal, white, yellow

colo:rgb(255,255,255);   color: #F5F5F5;               /* 前景(文本)颜色 */  color: qlineargradient();     /* 前景(文本)颜色:线性渐变*/  color: qradialgradient();     /* 前景(文本)颜色:辐射渐变*/  color: qconicalgradient();    /* 前景(文本)颜色:梯形渐变*/  

4.3 内边距

padding: 4px;                      /* 文字边距 */  padding-left: 5px;                 /* 文字左边距 */  padding-right: 10px;               /* 文字右边距 */  padding-top: 3px;                  /* 文字顶边距 */  padding-bottom: 3px;               /* 文字底边距 */

4.4 外边距

margin: 14px 18px 20px 18px; /*外边距 顺序上右下左 */margin-top: 14px;margin-right: 18px;margin-bottom: 20px;margin-left: 18px;

4.5 背景

background-color: #202122;               /* 背景颜色 */  background-color: qlineargradient();    /* 背景颜色:线性渐变*/  background-color: qradialgradient();    /* 背景颜色:辐射渐变*/  background-color: qconicalgradient();   /* 背景颜色:梯形渐变*/  background-image:url(boder.png);        /* 背景图片 */  background-position: ;                 /* 背景图片对齐方式 */  background-repeat: ;                   /* 背景图片平铺方式 */  

4.6 边框

border-style: dotted;(点线) dashed;(虚线) solid; double;(双线) groove;(槽线) ridge;(脊状) inset;(凹陷) outset;

border-width:; 边框宽度

border-color:#;

简写方法border:width style color; /*简写*/

border: 1px solid #FDBC03;                       /* 边框:宽度 颜色*/  border-image:url(boder.png) 4 8 12 16;           /* 边界图 切线 */  border-radius: 4px;                              /* 角弧度 */  border-top-left-radius: ;                        /* 角弧度:左上角*/  border-top-right-radius: ;                       /* 角弧度:右上角*/  border-bottom-left-radius: ;                     /* 角弧度:左下角*/  border-bottom-right-radius: ;                    /* 角弧度:右下角*/  

4.7 宽高

width:12px;   /*设置宽度 单位像素*/height:40px     /*设置高度*/min-width:65px;     /*最小宽度 设置width无效可以尝试设置min-width */                      min-height:12px;    /*最小高度*/                       max-width:12px;max-height:12px;

五:QSS伪状态与子控件

伪状态列表

:checked                        /*button部件被选中*/ 
:unchecked                      /*button部件未被选中*/ 
:disabled                       /*部件被禁用*/ 
:enabled                        /*部件被启用*/ 
:focus                          /*部件获得焦点*/ 
:hover                          /*鼠标位于部件上*/ 
:indeterminate                  /*checkbox或radiobutton被部分选中*/ 
:off                            /*部件可以切换,且处于off状态*/ 
:on                             /*部件可以切换,且处于on状态*/ 
:pressed                        /*部件被鼠标按下*/ 

子部件列表

::down-arrow         /*combo box或spin box的下拉箭头*/ 
::drop-down          /*combo box的下拉箭头*/ ::indicator      /*checkbox、radio button或可选择group box的指示器*/ 
::item               /*menu、menu bar或status bar的子项目*/ 
::menu-indicator     /*push button的菜单指示器*/ 
::title              /*group box的标题*/ ::down-button        /*spin box的向下按钮*/
::up-arrow           /*spin box的向上箭头*/ 
::up-button          /*spin box的向上按钮*/ 

参考文章:

Qt Style Sheet实践(一):按钮及关联菜单 - 24K纯开源 - 博客园

使用Qss设置QT程序界面的样式和皮肤 - 一字千金 - 博客园

qt QSS文件伪状态 - luxiaolai - 博客园

QSS总结以及最近做的Qt项目 - 薰衣草的旋律 - 博客园


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

相关文章

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

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

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

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

交换机组建局域网

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

基于JAVA的局域网聊天软件的设计与实现(仿制QQ)

一、系统分析 1.1 问题描述 客户端 实现简易版的局域网聊天器实现富文本内容聊天智能聊天机器人群发消息传送文件等功能 服务器端 实现群发通知管理聊天线程 1.2 系统功能分析 客户端功能 登陆注册发送表情消息发送文本消息截取图片图片处理震动效果发送文件群发消息设置聊天…

通过交换机组建局域网

实现目标:利用交换机搭建一个局域网,使得该局域网下同一网段的所有机器相互通信 所需设备:电脑一台,树莓派两个,工控机两台,TP-Link交换机一台。 该教程就以一台电脑和一台树莓派搭建局域网为一个demo&am…

PHPstudy配置局域网

PHPstudy配置局域网 1.打开小皮网站(https://www.xp.cn/download.html),下载64位PHPstudy到电脑桌面 2.解压zip文件 3.打开解压后的文件夹,找到.exe文件,直接安装 4.安装好之后,开启Apache、FTP和MySQL 5…

局域网传输/共享大文件

局域网传输/共享大文件 前段时间和同学传一个4g的数据。想到如下几个点子 通过qq进行传输,但是要上传,还要下载,还要网速给力才行,而且花费的可是双倍的时间,一个上传一个下载,等的黄花菜都凉了。通过u盘…

局域网网站服务器dns设置,局域网设置dns的方法

DNS域名解析是指通过主机名得到该主机名对应的IP地址。BIND作为局域网上广泛使用的DNS服务器软件,通过对区文件的管理实现对DNS域名的授权和查询使用。下面是学习啦小编为大家整理的关于局域网设置dns怎么设置在哪,一起来看看吧! 局域网设置dns的方法 Windows 7相比于常用的Wi…

局域网传输文件_局域网微信?这是什么神仙玩法

前天我们刚好谈到局域网在观看各类资源时的作用。 那么就接着聊聊局域网的其他妙用。 今天无论在家还是在外,只要连接同一个 WiFi,大家的设备就在一个局域网内。 而相比微信、QQ 等需要中转服务器的聊天/办公工具。 局域网下,多台设备能够点对…

局域网下的两个 QQ 好友进行在线文件传输抓包

局域网下的两个 QQ 好友进行在线文件传输过程抓包 文章目录 局域网下的两个 QQ 好友进行在线文件传输过程抓包介绍细节总结 介绍 由于本人一个作业需要,想要验证内网情况下两个 QQ 好友的文件传输是通过局域网直接传输的。以下是本人的数据抓包结果,具体…

C# Socket编程实现简单的局域网聊天器

前言 最近在学习C# Socket相关的知识,学习之余,动手做了一个简单的局域网聊天器。有萌生做这个的想法,主要是由于之前家里两台电脑之间想要传输文件十分麻烦,需要借助QQ,微信或者其他第三方应用,基本都要登…

局域网传文件_秒杀QQ微信,这3个神器传输文件快10倍

所需软件:奶牛传输、Xender 获取办法:私信回复「301」获取 每次一聊到传输文件,学霸君的同事简直叫苦不迭“百度云下载速度太慢了!一个文件,半个小时都下载不完”、“好久不用QQ,连密码都忘记了”、“微信…

简易局域网聊天QQ

简易局域网聊天系统–局域网QQ 服务器端 实现简易的启动停止服务器端操作,能记录基本日志:客户连接、消息传送,能查看连接客户的昵称。 启动服务器后开始监听客户端连接,创建一个新线程实现该监听操作。 // 启动新线程监听客户…

Win 7 SSDP 组播 引发 局域网 QQ掉线 分析

很久没有写博客了,自从四月份以来找了一份开发的工作开始从事PHP,symfony 网站开发,突然发现好像也没有什么东西可以分享了,所以博客也写的少了。 言归正传,最近学校常常有人抱怨QQ掉线,而且据说有严重的趋…

kali局域网扫描ip_kali 扫描局域网的QQ

扫描电脑端 方法一:抓包方式 相对于电脑端来说,很简单。因为电脑的QQ使用的是OICQ协议。我们只需要抓包搜索OICQ协议即可。 然后查找协议 OICQ - IM software, popular in China展开后即可看到QQ号码 方法二:利用软件 下载软件QQSNIFFER运行扫描

利用SWT做Java版局域网QQ(一)——基于UDP协议

首先自我介绍下,本人非专职IT人员、纯粹是IT爱好者,也并非计算机专业毕业的,所用的Java知识也全凭空闲时间学习的,所以在很多地方代码不够精炼,也只是能实现 一些功能吧,当然也参考了一些前辈的文档等。写此篇博客也纯粹是把自己学到的写写笔记而已。好了废话不多说,开始…

C#局域网聊天程序

【例1】下面演示如何使用C#制作一个局域网聊天程序,程序开发步骤如下: (1)新建一个Windows应用程序,并命名为11,这时程序自动创建了一个解决方案,名称为11。 (2)将默认创建的Windows 窗体删除,然后在名称为…

局域网攻击

arp攻击 必要内容 安装arpspoof文件 apt-get install dsniff1.检查以及获取网段 即查看局域网存活主机 fping -asg 192.168.1.1/24 或者-->nmap -sP ip 扫描常用的端口-->nmap -F -sT -v nmap.org注意点: ①攻击者的IP和被攻击者的IP需要在同一个网段中&a…

仿QQ局域网聊天软件

1 目的 想复习一下TCP/IP协议,再结合一下以前学的Qt的知识,加上前段时间学的MySQL数据库操作,所以写了个"仿QQ局域网聊天软件"小项目,只实现了一部分功能,还没写完,后面的功能后面慢慢加,毕竟一口…

同一局域网内怎样获取新来美眉QQ号码!((*^__^*) 嘻嘻……)

看到这个标题,想必有些人已经按耐不住内心的激动,迫切想知道如何在局域网内获取新来美眉的QQ号码的。当然,如果你是程序猿妹子,公司新来的帅哥你也可以大胆的用这种方法获取哦。当然,有的人也许会说获取QQ号有什么用啊…