【QT入门】Qt自定义控件与样式设计之qss的加载方式

往期回顾

【QT入门】 Qt自定义控件与样式设计之QPushButton点击按钮弹出菜单-CSDN博客

【QT入门】Qt自定义控件与样式设计之QProgressBar用法及qss-CSDN博客

【QT入门】 Qt自定义控件与样式设计之QSlider用法及qss-CSDN博客

 【QT入门】Qt自定义控件与样式设计之qss的加载方式

QSS(Qt Style Sheets),Qt框架中用于定义界面样式的一种机制,它类似于CSS。加载方式还是有好几种,只是我们平时在用的时候常见的都是直接在代码里写或者建一个qss.h文件。下面对每种样式做简单介绍:

一、在代码中直接设置

可以在程序代码中直接设置QSS样式,通过setStyleSheet方法将QSS样式应用到指定的控件上。这种方式适用于需要动态改变样式的情况。也是我最常用的方式。

示例:

widget->setStyleSheet("QPushButton { background-color: red; }");

二、新建qss.h头文件 

用QString或R字符串把样式写进去,然后在某个需要样式的文件里添加头文件,引用相关样式即可

这个方式用的也很多,适用于样式代码过多,而且复用性强的情况。

示例:

qss.h

#ifndef QSS_H
#define QSS_H#include <string>using namespace std;string hslider_qss = R"(QSlider{background-color: #FF0000;border-style: outset;border-radius: 1px;}QSlider::groove:horizontal{height: 12px;background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);margin: 2px 0}QSlider::handle:horizontal{background: QRadialGradient(cx:0, cy:0, radius: 1, fx:0.5, fy:0.5, stop:0 white, stop:1 green);width: 16px;height: 16px;margin: -5px 6px -5px 6px;border-radius:11px;border: 3px solid #ffffff;})";#endif // QSS_H

由于我的qss样式是写在R字符串里的,所以这里用到一个fromStdString方法去转换 

三、写到qss文件里,读文件

1、加到qrc文件里,编译到exe里面

将QSS样式文件(通常以.qss为后缀)添加到程序的资源文件中,然后QFile QTextStream等类读取QSS文件内容,并应用到相应的控件上。

示例:

QFile qssFile(":/stylesheets/mystyle.qss");
if (qssFile.open(QFile::ReadOnly | QFile::Text)) {QTextStream stream(&qssFile);qApp->setStyleSheet(stream.readAll());qssFile.close();
}

2、写在程序外部,暴露给用户

将QSS样式文件保存在程序所在目录或指定目录中,暴露给用户,然后通过绝对路径或相对路径加载QSS文件。

示例:

先是在项目文件夹里创建一个.qss文件,然后在项目创建resource,像添加图片一样把qss文件添加进去最后在widget里对样式文件进行读取

  QFile file(":/res/skin.qss");QString lineStr;if(file.open(QIODevice::ReadOnly | QIODevice::Text)){//转换成流去读取QTextStream txtInput(&file);//在没有读到最后一行的情况下,就一直读while(!txtInput.atEnd()){lineStr += txtInput.readLine(); //逐行读取qss代码}}file.close();this->setStyleSheet(lineStr);

四、通过命令行参数加载 

可以在启动程序时通过命令行参数指定QSS样式文件的路径,然后在程序中读取并应用该样式。这个目前来说用的比较少,我基本不用了。

示例:

myapp -stylesheet path/to/mystyle.qss

int main(int argc, char *argv[]) {QApplication app(argc, argv);if (app.arguments().contains("-stylesheet")) {QString qssFile = app.arguments().at(app.arguments().indexOf("-stylesheet") + 1);QFile file(qssFile);if (file.open(QFile::ReadOnly | QFile::Text)) {QTextStream stream(&file);app.setStyleSheet(stream.readAll());file.close();}}// Other initialization codereturn app.exec();
}

以上,就是qss样式加载的几种方式的基本介绍

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

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

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

相关文章

JDBC看这一篇就够了

JDBC核心技术 第1章&#xff1a;JDBC概述 1.1 数据的持久化 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持久化意味着将内存中的数据保存到硬盘上加以”固化”&#xff0c;而持久…

centos7上docker搭建vulhub靶场

1 vulhub靶场概述 VulHub是一个在线靶场平台&#xff0c;提供了丰富的漏洞环境供安全爱好者学习和实践。 该平台主要面向网络安全初学者和进阶者&#xff0c;通过模拟真实的漏洞环境&#xff0c;帮助用户深入了解漏洞的成因、利用方式以及防范措施。 此外&#xff0c;VulHub还…

Kubernetes学习笔记7

使用kubeadm部署Kubernetes集群方法 使用kubernetes部署单节点Master节点K8s集群。 在实际生产环境中&#xff0c;是不允许单master节点的&#xff0c;如果单master节点不可用的话&#xff0c;当导致我们的K8s集群无法访问。 可以使用kubeadm将单master节点升级为多master节点…

ResultBuilder学习笔记三:支持循环

ResultBuilder学习笔记三&#xff1a;支持循环 我们在前面的博文中创建了一个非常简单的结果构建器ConcatBuilder&#xff0c;用于连接多个字符串&#xff0c;随后在后续博文中对之进行了扩展&#xff0c;使其可以支持自定义的输入数据类型&#xff0c;这个特性非常重要&#…

数据库语言:DDL与DML详解

目录 数据库语言&#xff1a;DDL与DML详解引言数据定义语言&#xff08;DDL&#xff09;什么是DDL&#xff1f;DDL的作用和重要性DDL常用命令DDL示例和用法 数据操纵语言&#xff08;DML&#xff09;什么是DML&#xff1f;DML的作用和重要性DML常用命令DML示例和用法 DDL与DML的…

智能制造六大核心发展方向,驱动企业数字化转型

在制造过程中&#xff0c;智能制造展现出非凡的活力&#xff0c;它使人与智能机器的协同工作成为可能。这不仅将制造自动化的概念提升至一个新的层次&#xff0c;更将其扩展至柔性化、智能化和高度集成化的领域。通过这样的革新&#xff0c;我们得以实现数字化智能工厂的落地生…

Linux的学习之路:5、粘滞位与vim

摘要 这里主要是把上章没说完的权限的粘滞位说一下&#xff0c;然后就是vim的一些操作。 目录 摘要 一、粘滞位 二、权限总结 三、vim的基本概念 四、vim的基本操作 五、vim正常模式命令集 1、插入模式 2、从插入模式切换为命令模式 3、移动光标 4、删除文字 5、复…

Spring MVC体系结构和处理请求控制器(一)

一、MVC模式 MVC模式是指Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式&#xff0c;是开发Web应用程序时常用的一种代码分层模式MVC模式是软件工程中的一种架构模式&#xff0c;会强制行的把系统的输入、处理和输出分开&#xff0c;是系统从功能上形成M…

我的小程序接口被刷爆了

自然流量的惊喜 书接上文&#xff0c;凭着短视频的好奇&#xff0c;搭了个小程序&#xff0c;做了文案提取&#xff0c;配音等功能&#xff0c;也顺带写了两篇口水文章&#xff0c;不曾想居然收获历史最高的点赞与收藏。有兴趣的朋友可以点这里一看究尽&#xff1a;《短视频配音…

B02、GC日志分析-案例演示-6.4

1、案例一&#xff1a;堆溢出演示 1.1、简单springboot项目创建 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:s…

立方变自身 蓝桥杯 java

题目 观察下面的现象,某个数字的立方&#xff0c;按位累加仍然等于自身。 1^3 1 8^3 512 5128 17^3 4913 491317 … 请你计算包括1,8,17在内&#xff0c;符合这个性质的正整数一共有多少个&#xff1f; 请填写该数字&#xff0c;不要填写任何多余的内容或说明性的文字。 答…

环形队列的简单理解

多次遇到环形队列的情况&#xff0c;记不住什么情况是队列满&#xff0c;什么情况是队列空。一直也没有理解透彻。 仔细研究了一下&#xff0c;掌握了一些原理&#xff0c;记录一下。 1. 环形队列有一个头指针head&#xff0c;一个为指针tail。有一个疑问&#xff1a;head和ta…

更换淘宝镜像地址,旧的已经失效(https://registry.npm.taobao.org )

旧的镜像地址&#xff1a;npm install --registryhttps://registry.npm.taobao.org 新的镜像地址&#xff1a;npm install --registryhttps://registry.npmmirror.com

【2024最新博客美化教程重置版】今天教你如何使用SimpleMemory美化你的博客,体会一下大神是如何装逼的!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 SimpleMemory …

代理与反向代理

Java项目的代理与反向代理 1. 代理 定位&#xff1a;为客户端服务通信方向&#xff1a;客户端->代理服务器->远程服务器好处&#xff1a;对客户端行为进行过滤和控制&#xff1b;隐藏客户端IP地址&#xff1b;审计流量&#xff1b;缓存资源加快访问速度&#xff1b; 2…

ChatGPT 写作利器:探索ChatGPT在论文写作中的应用

ChatGPT无限次数:点击直达 ChatGPT 写作利器&#xff1a;探索ChatGPT在论文写作中的应用 引言 ChatGPT是一种强大的自然语言处理工具&#xff0c;能够为我们提供高效、准确的文本生成功能。在论文写作领域&#xff0c;ChatGPT的应用也逐渐受到关注。本文将探讨ChatGPT在论文写…

javascript:call()、apply()、bind()的区别和使用

javascript&#xff1a;call()、apply()、bind()的区别和使用 1 前言 记录javascript的call、apply、bind方法绑定this的区别以及使用。 call、apply、bind的区别&#xff1a; 【相同点】&#xff1a;作用相同&#xff0c;都是动态修改this指向&#xff1b;都不会修改原先函…

【算法基础】插入排序与二分查找、升级二分查找

文章目录 1. 插入排序1.1 插入排序的思想1.2 插入排序的实现 2. 普通二分查找2.1 普通二分查找的思想2.2 普通二分查找的实现 3. 升级二分查找3.1 升级二分查找思想3.2 升级二分查找实现 1. 插入排序 1.1 插入排序的思想 插入排序很类似于已有一副有序的扑克牌&#xff0c;不断…

【话题】AI技术创业有那些机会,简单探讨下

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景机会一、引言二、AI技术的创业机遇1.智能服务行业的兴起2.数据驱动的业务模式创新3.AI与产业融合的创新发展 三、AI技术创业的挑战1.技术门槛高2.法规政策的不确定性…

P1712 [NOI2016] 区间(线段树 + 贪心 + 双指针)

题目描述 在数轴上有 n 个闭区间从 1 至 n 编号&#xff0c;第 i 个闭区间为 [li​,ri​] 。 现在要从中选出 m 个区间&#xff0c;使得这 m 个区间共同包含至少一个位置。换句话说&#xff0c;就是使得存在一个 x &#xff0c;使得对于每一个被选中的区间 [li​,ri​]&#…