news 2026/7/14 14:07:51

QT界面优化:QSS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT界面优化:QSS

样式优先级规则:

(1)从高到低:内联样式(控件.setStyleSheet)>ID 选择器(#objectName)>通配+属性(*[属性="值"])>类选择器(.className)>属性选择器(控件[属性="值"])>类型选择器QPushButton)>纯通配符*);

(2)也可通过!important强制提升优先级(如background-color: red !important;

1.内联样式
//1.为单个控件设置QSS QPushButton button("Click me"); button.setStyleSheet("background-color: blue; color: white;"); // 2.设置整个应用程序的样式 a.setStyleSheet("QPushButton { background-color: red; color: yellow; }");
2.选择器的使用
2.1 ID 选择器(匹配指定objectName的控件)
//通过setObjectName方法为按钮设置了objectName, //然后使用 ID 选择器#myButton为该按钮设置样式。 QPushButton button("Click me"); button.setObjectName("myButton"); a.setStyleSheet("#myButton { background-color: purple; color: white; }");
2.2 类选择器(匹配所有 styleClass 为 "QGroupBox" 的控件
//匹配 styleClass 为 "primary_btn" 的控件 */ .primary_btn { background-color: #2486ff; color: white; border: none; border-radius: 4px; } // 类选择器使用示例:给控件设置 styleClass QPushButton btn("主要按钮"); btn.setProperty("class", "primary_btn"); // 设置 styleClass 注意:先设置styleClass再加载QSS
2.3 属性选择器(用于选择具有特定属性的控件)
//1:基础:匹配 flat 属性为 true 的 QPushButton */ QPushButton[flat="true"] { background-color: transparent; border: none; } //实例 QPushButton *btn1 = new QPushButton("普通扁平按钮"); btn1->setFlat(true); // 设置 flat 属性为 true //2:多属性匹配(同时满足 flat=true 且 text="确定") */ QPushButton[flat="true"][text="确定"] { color: #2486ff; } //实例 QPushButton *btn2 = new QPushButton("确定"); btn2->setFlat(true); // 同时满足 flat=true + text="确定" //3:模糊匹配(objectName 包含 "btn" 的 QPushButton) */ QPushButton[objectName*="btn"] { font-weight: bold; } //实例 QPushButton *btn3 = new QPushButton("名称含btn的按钮"); btn3->setObjectName("my_btn_123"); // objectName 包含 "btn"
2.4 类型选择器(用于选择指定类型的所有控件)
QPushButton { background-color: green; border: 2px solid black; }
2.5 通配符选择器(匹配所有控件或 父控件下的所有子控件)
//用法 1:单独使用 → 全局匹配所有控件 /* 全局样式:所有控件生效 */ * { margin: 0px; padding: 0px; border: none; } //用法 2:结合属性选择器 → 精准匹配 “某类属性的所有控件” /* 匹配「所有 class 属性为 QGroupBox 的控件」(无论控件类型是按钮/分组框) */ *[class="QGroupBox"] { border: 1px solid blue !important; background: transparent !important; } //用法 3:作为后代选择器 → 匹配 “父控件下的所有子控件” /* 匹配 QWidget#widget 下的所有子控件(Label/Button/输入框等) */ QWidget#widget * { color: rgb(255,255,255); /* 子控件文字全部变白 */ } /* 进阶:匹配 QGroupBox 下的所有子控件,且子控件 class 为 QGroupBox */ QGroupBox *[class="QGroupBox"] { border-radius: 8px; }
2.6 伪状态选择器(用于选择处于特定状态的控件)
//鼠标悬停 QPushButton:hover { background-color: orange; } //按钮被按下 QPushButton:pressed { background-color: pink; }
3. 加载 QSS应用
//使用类选择器 先设置 styleClass 后加载QSS ui->groupBox->setProperty("class", "QGroupBox"); ui->pushButton->setProperty("class", "QGroupBox"); QFile file(":/qss.css"); if(file.open(QFile::ReadOnly)) { QString qss = QLatin1String(file.readAll()); qApp->setStyleSheet(qss); file.close(); } else { qWarning() << "无法打开样式文件:" << file.errorString(); }
//qss.css /* 匹配程序中所有控件 */ * { font-family: "Arial"; /* 所有控件的字体统一为 Arial */ } QWidget#widget , QWidget#widget_3{ background-color: rgb(38, 59, 83); } QWidget#widget *, QWidget#widget_3 * { color: rgb(255, 255, 255); } QWidget#widget_2 { background-color: rgb(240, 245, 251); } /* 类选择器:同时适配 QGroupBox 和 QPushButton */ .QGroupBox { border: 1px solid blue; /* 统一边框 */ border-radius: 5px; /* 圆角 */ margin-top: 3ex; /* 上边距(对按钮也生效,但需注意布局) */ } /* 仅对 QGroupBox 生效的标题样式(按钮无 title 子控件,自动忽略) */ .QGroupBox::title { subcontrol-origin: margin; position: relative; left: 10px; }

更多内容转载https://blog.csdn.net/2401_89899187/article/details/161731695?fromshare=blogdetail&sharetype=blogdetail&sharerId=161731695&sharerefer=PC&sharesource=weixin_63811723&sharefrom=from_link

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 14:06:58

SpringBoot配置管理:多环境切换的最佳实践

你正在开发一个SpringBoot微服务&#xff0c;本地一切正常&#xff0c;一部署到测试环境就报数据库连接失败&#xff1b;同事说“我这边跑没问题啊&#xff0c;你检查下application.yml”&#xff0c;你翻了个白眼——这种“配置地狱”几乎每个Java后端都经历过。多环境配置管理…

作者头像 李华
网站建设 2026/7/14 14:06:37

go http Client net/http

框架推荐net/httpgo的内置http工具&#xff0c;可以构建client和server。Slf4j Controller RequestMapping("/rest") public class RestTestController {GetMapping("/get")ResponseBodypublic String get(RequestBody SSHConnectParam param) throws Exce…

作者头像 李华
网站建设 2026/7/14 14:06:31

86788

87654

作者头像 李华
网站建设 2026/7/14 14:06:01

闲鱼自动化监控系统:3分钟快速部署,实现24小时智能商品抓取

闲鱼自动化监控系统&#xff1a;3分钟快速部署&#xff0c;实现24小时智能商品抓取 【免费下载链接】idlefish_xianyu_spider-crawler-sender 闲鱼自动抓取/筛选/发送系统&#xff0c;xianyu spider crawler blablabla 项目地址: https://gitcode.com/gh_mirrors/id/idlefish…

作者头像 李华
网站建设 2026/7/14 14:05:41

m4s-converter:如何快速将B站缓存视频转换为通用MP4格式

m4s-converter&#xff1a;如何快速将B站缓存视频转换为通用MP4格式 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 在B站视频下架或网络不佳时&…

作者头像 李华