Qt学习_08_用独立的文件存放样式表
创始人
2025-05-29 15:34:35

0 前言

上一篇笔记对样式表进行了初步学习,QT学习_07_样式表的初步学习_江湖上都叫我秋博的博客-CSDN博客,在文末我们提到了“样式表肯定不能直接这么写在构造函数里面,那么多样式表看着心就堵,所以下一篇文章考虑如何把样式表用单独的文件,或多个不同的文件来写。”,时隔4个半月,特来还愿。一个好的Qt项目,样式表与逻辑肯定是分离的。在全网搜索了各种把样式表分离出来的办法, 用qss文件的办法是最常见的。 不过qss对局部生效这一点我还没搞清楚,或许它也没办法搞定局部生效的问题,所以本文讲的另一种办法。可以精准的设置每一个部件的样式。

1 正文

在文章QT学习_07_样式表的初步学习_江湖上都叫我秋博的博客-CSDN博客也提了,在构造函数中可以用以下语法来设置指定部件的样式表(局部生效)。

this->setStyleSheet(“样式表”); // 全局生效
ui->指定部件的objectName->setStyleSheet(“样式表”); // 局部生效

setStyleSheet函数的参数是一个QString字符串。这个QString字符串我可以用静态的全局变量的存储,我可以把这些静态全局变量的定义都放在同一个.h文件中,而不是用.qss文件中。

假设我的Qt项目,同时拥有主窗口和子窗口,而且主窗口和每个子窗口都是带 .cpp .h .ui文件的Qt设计师界面类,比如:Qt学习_11_构建内嵌子界面与独立子界面的框架_江湖上都叫我秋博的博客-CSDN博客这篇文章的例子项目。

那么我们可以给每一个Qt设计师界面类都添加一个样式表.h文件。

 

添加完之后的项目目录如下:

 

以download.h 和 download_qss.h为例, 我们需要在download.h里面包含download_qss.h。

#ifndef DOWNLOAD_H
#define DOWNLOAD_H#include 
#include  // 👈只看这里就好namespace Ui {
class Download;
}class Download : public QWidget
{Q_OBJECTpublic:explicit Download(QWidget *parent = nullptr);~Download();private:Ui::Download *ui;
};#endif // DOWNLOAD_H

 download_qss.h里,我们首先需要包含,然后就可以用静态全局变量来定义样式表了。

#ifndef DOWNLOAD_QSS_H
#define DOWNLOAD_QSS_H
#include // 全局生效样式表
// 命名规则:
// Download 本Qt设计师界面类的类名
// gqss g是global的缩写,【全局】的意思, qss就是Qt样式表的意思
// QLabel 表示本界面的所有QLabel的样式static QString Download_gqss_QLabel ="QLabel{""color:red;""}";// 局部生效样式表
// 命名规则:
// Download 本Qt设计师界面类的类名
// lqss l是local的缩写,【局部】的意思, qss就是Qt样式表的意思
// label1 只是类Download里面包含的某个QLabel部件类static QString Download_lqss_label1 ="QLabel{""color:green;""border-image:url(:/img/img_download)""}";#endif // DOWNLOAD_QSS_H

 

每一个静态的全局QString变量,它可以代表本主/子窗口类用于全局生效的样式表,也可以代表本窗口仅用于某个指定部件的样式表(一个样式表就可以根据不同伪状态设置不同的样式,因此就不用再细分了),所以在定义样式表的时候,我们用变量的名称(_gqss_全局样式/_lqss_局部样式)加以区分。

测试,先给Download子界面拉4个标签

 在download.cpp里面,分别全局加载和局部加载样式表。

#include "download.h"
#include "ui_download.h"Download::Download(QWidget *parent) :QWidget(parent),ui(new Ui::Download)
{ui->setupUi(this);this->setStyleSheet(Download_gqss_QLabel);          // 设置全局的QLabelui->label1->setStyleSheet(Download_lqss_label1);    // 仅设置label1
}Download::~Download()
{delete ui;
}

运行效果如下:

最后愿我们共同进步! 感谢您的阅读,欢迎留言讨论、收藏、点赞、分享。 

相关内容

热门资讯

Redis学习笔记 ---- ... 常见的有五种:String(字符串),Has...
Java实现十类排序算法对比展... Java实现排序算法 本代码展示了Java中常见的十种排序算法,并对每种算法的时间复杂...
SC8P1762E_汇编指令一... 控制类 NOP, 空操作 STOP, 进入休眠模式 CLR...
微信小程序实现图片上传(清晰版... 在wxml文件中添加一个按钮和一个image标签用于显示上传的图片 选择图片 在js文件中添加选择...
Maven打包子模块 项目结构1. project_01: 一个多模块的maven工程2. module_01: 工程pr...
Scala安装及设置查看源代码 文章目录一、安装Scala环境1.1、下载Scala1.2、配置scala环境变量1.3、测试是否安...
使用大规模数据注释和深度学习对... 使用大规模数据注释和深度学习对具有人类水平性能的组织图像进行全细胞分割摘要绪论Mesmer2.1Me...
【数据结构】TreeMap和T... 目录 1、TreeMap 1.1 TreeMap 的简介  1.2 TreeMap 的基本使用 2、...
Django之视图的使用 Django之视图的使用视图基本使用函数视图类视图视图与模板请求对象HttpRequest常见属性和...
零基础能学大数据吗? 大数据入门不像学一门编程语言,自学一段时间就OK了。大数据是需要站在编程的基础上学习的...
OperatorChain设计 在JobGraph构建过程中,会将满足链化条件的StreamOperator连接在一起...
Phoenix整合phoeni... 首先我们添加上maven依赖,可以看到5.1.2 对应的hbase是2.4对吧 然后添加了依赖,...
【华为机试真题详解 Pytho... 文章目录 前言题目描述输入描述输出描述题目解析参考代码 前言 《华为机试真题详解》专栏含牛客网...
Scala---Array方法 Scala之Array的方法 文章目录Scala之Array的方法数组声明一个数组1.元素操作替换...
内存避障的前世今生 相关 《内存避障:一个内存乱序实例》 《内存避障的前世今生》 0 总结 单核下的指令...
九龙证券|重要信号!下周,没有... 依据新股发行安排,下周有9只新股申购,包含科创板新股4只、创业板新股3只...
【spring高级49讲】 Spring高级49讲 Spring是整个Java体系最核心的框架,没有之一面试必备技术、思想提升...
Linux - 进程控制(进程... 进程等待必要性之前讲过,子进程退出,父进程如果不管不顾,就...
GeoServer发布ArcM... 项目过程中遇到一个需求:leaflet要使用自定义的底图。现在配图一般都会用ArcMa...
【Vue3 基础加餐篇】07.... Vue 中增加 key ,是为了更精准的定位到元素,从而减少渲染。那具体这个更精准的定位是什么?以及...
吲哚花菁素IR染料IR780 ... 一、中英文别名:CAS号:N/A | 英文名:IR780 ...
【MySQL】解决MySQL登... 大家在打开MySQL时,可能会遇到在登陆界面输入密码之后就闪退的这个问题. 平时我们写代码,虽然会报...
Java:新手学习java需要...   Java是全球使用最广泛的编程语言之一。你可能在想为什么要学习Java?作为一个新的编码初学者&...
【Vue全家桶】模板语法 【Vue全家桶】模板语法 文章目录【Vue全家桶】模板语法写在前面一、Mustache语法二、事件处...
改变网页皮肤-课后程序(Jav... 【案例1-8】改变网页皮肤 一、案例描述 考核知识点onclick()事件 练习目标掌握onclic...
【服务器数据恢复】使用碎片拼接... 服务器数据恢复环境: 某公司一台DELL服务器,作为WEB服务器使用&#...
Ripser.py学习 (1)... 文章目录1 概述2 安装3 示意 1 概述 Ripser.py是一个用于持续同伦 (Persiste...
数据分析-数据探索 文章目录前言主要内容总结更多宝藏 前言 😎🥳😎&#...
stm32 mbed L432... 目录 一.前言 二.简介 三.SPI细节讲解 1.串行通信(serial peripheral ...
基于飞桨实现的特定领域知识图谱... 文本匹配任务在自然语言处理领域中是非常重要的基础任务,一般用于研究两段文本之间的关系。...