QSS样式表的使用

QSS样式表的使用

  • Chapter1 【Qt】样式表的使用——设置样式的方法
    • 一、简述
    • 二、开始总结


Chapter1 【Qt】样式表的使用——设置样式的方法

原文链接:https://blog.csdn.net/weixin_41838721/article/details/123323206

一、简述

我们通常在使用Qt开发的过程中都会使用样式表来美化我们的界面,关于如何使用样式表的资料也很多,样式表的使用方法也千变万化。为了搭建一个漂亮的界面那么必须学会如何使用样式表,Qt帮助文档中提供了非常好的例子以及详细介绍,非常适合学习。同时呢,也不能光看文档中是如何设置样式,我们要亲自动手做一遍才能理解得更加透彻,好了闲话不多说,下面就我在日常开发过程中对样式表的使用做一下简单的总结。

二、开始总结

1、先谈谈我们设置样式有几种方法
(a)、最简单,也是最直接——在Qt Designer 中添加样式
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
我们在编辑框中添加需要的样式即可,然后点击确定我们就可以看到设置的效果了,这里我们只对QPushButton设置了样式,那我们是不是对界面上每个控件都要单独设置样式呢?

当然不需要,我们可以对整个界面设置样式,然后将所有控件的样式都写在其中就可以了。

在这里插入图片描述
Qt的样式表编辑工具可以帮助我们检验样式是否编写正确。
在这里插入图片描述
我们看到下面设置的样式有误,并没有检测出来,但是这里的错误只会影响这一条样式无效,而不会导致整个样式无效。我们看到右边这张图片QPushButton,虽然样式写的有问题,但是还是设置了按钮的背景色和字体的大小。所以这里不是所有问题都能检测出来,如果发现设置的样式与显示效果不一致,那就需要好好检查一下样式写的是否正确。
在这里插入图片描述
在这里插入图片描述
(b)、在代码中添加样式
// 对单个控件;

ui.pushButton->setStyleSheet("QPushButton{border-radius:5px;background:rgb(150, 190, 60);color:red;font-size:15px;}")

// 对整个界面(包括界面上所有的控件)

this->setStyleSheet("QPushButton{border-radius:5px;background:rgb(150, 190, 60);color:red;font-size:15px; \
QToolButton{border-radius:5px;background:rgb(34, 231, 131);color:brown;font-size:15px;}")

在代码中我们直接调用setStyleSheet方法即可对控件或者整个界面设置样式。

(c)、将样式写在文件中,通过读取文件的方式设置样式
将样式保存在MyStyle.qss文件中。
在这里插入图片描述
通过以下代码将MyStyle.qss文件中的样式读取出来,然后调用setStyleSheet方法设置样式。

void loadStyleSheet(const QString &sheetName)
{QFile file(sheetName);file.open(QFile::ReadOnly);if (file.isOpen()){QString styleSheet = this->styleSheet();styleSheet += QLatin1String(file.readAll());this->setStyleSheet(styleSheet);}
}

2、再谈谈这几种设置样式方法的优缺点
(a)、最简单,也是最直接——在Qt Designer 中添加样式
优点:通过这种方法我们对于设置完样式可以立马显示出效果(不需要编译再运行),也可以检测当前样式是否编写错误(只能简单判断,并不能对所有情况进行判断)。同时Qt Designer也可以帮助我们快速添加样式,见下图。
在这里插入图片描述
缺点:个人感觉在Qt Designer中编写样式不是很清晰,尤其是在样式比较多时,不利于检查样式是否编写错误。同时不可以二次修改,即界面显示完毕后无法通过此方法修改界面的样式,只能靠代码去修改。

(b)、在代码中添加样式
优点:此种方法很方便,也很快捷。可以随时设置样式,改变样式,根据不同条件设置不同的样式,而不像第一、第三种方法直接设置固定样式。

缺点:当样式内容较复杂时,不利于查看,同时可能为了编码风格美观需要将样式内容换行等,这样可能会导致样式错误,根本没有效果,导致需要多次调试,浪费不必要的时间。

(c)、将样式写在文件中,通过读取文件的方式设置样式
优点:这种方法在界面样式较复杂时,我们在文件中编写样式,内容比较清晰,样式编写格式错误更加明显。同时也便于修改,同时一些文件编辑器能够自动给出样式输入提示,提供高编码效率。

缺点:一般样式表文件都会加载到程序资源文件中,所以这里需要单独加载一个文件。同时跟第一种方法一样,不可以二次修改,当界面显示完毕后,只能靠调用setStyleSheet方法再次修改。

个人建议
一般来说,我们会将第二种和第三种方法结合起来使用。通常将整个界面的样式写在文件中,在界面初始化时读取并通过setStyleSheet方法设置,如果在显示界面以后,有一些控件需要变换样式的话在代码中可以单独给某一个控件调用setStyleSheet方法进行重新设置样式。同时非常需要注意的一点是,样式的设置以最后一次设置为准,因为每次设置(调用setStyleSheet(“样式”))都会覆盖之前一次设置的样式,或者如果不需要覆盖之前的样式可以这样写:

void setNewStyleSheet(QString styleSheet)
{//获取到原来的样式QString oldStyleSheet = this->styleSheet();styleSheet += oldStyleSheet;this->setStyleSheet(styleSheet);
}

第一种方法适合检测我们写的样式有没有错误,能够立即看到效果,如果我们发现在代码中设置样式,总是显示不了效果(每次修改都需要重新编译,耗时),可以现在Qt Designer中测试一下样式是否正确,在Qt Designer中修改正确后可以移至代码中。

原文:https://www.cnblogs.com/lifan3a/articles/8441175.html

常见样式

padding:7px; //图片与边框间距
image: url(:/buttonPicture/Image/xxx.png); //图片

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

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

相关文章

深入了解Python类与面向对象编程

更多资料获取 📚 个人网站:涛哥聊Python 在编程世界中,面向对象编程(OOP)是一种强大的编程范式,而Python是一门优雅而强大的编程语言。本文将带你深入探讨Python中的类与面向对象,为你揭示面向…

FHRP首跳冗余的解析

首跳冗余的解析 个人简介 HSRP hot standby router protocol 热备份路由协议 思科设备上 HSRP VRRP 华为设备上 VRRP HSRP v1 version 1 HSRP v2 version 2 虚拟一个HSRP虚拟IP地址 192.168.1.1 开启HSRP的抢占功能 通过其他参数 人为调整谁是主 谁是从 &a…

亚马逊,速卖通,敦煌产品测评补单攻略:低成本、高安全实操指南

随着电商平台的发展和消费者对产品质量的要求提升,测评补单成为了商家们提升销售和用户口碑的关键环节。然而,如何在保持成本低廉的同时确保操作安全,一直是卖家们面临的挑战。今天林哥分享一些实用的技巧和策略,帮助卖家们产品的…

阿里云ModelScope 是一个“模型即服务”(MaaS)平台

简介 项目地址:https://github.com/modelscope/modelscope/tree/master ModelScope 是一个“模型即服务”(MaaS)平台,旨在汇集来自AI社区的最先进的机器学习模型,并简化在实际应用中使用AI模型的流程。ModelScope库使开发人员能够通过丰富的…

uniapp上echarts地图钻取

1: 预期效果 通过切换地图 , 实现地图的钻取效果 2: 实现原理以及核心方法/参数 一开始是想利用更换地图数据的形式进行地图钻取 , 这就意味着我们需要准备全国30多个省份的地图数据 , 由于一开始考虑需要适配小程序端 , 如此多的地图文件增加了程序的体积 , 如果使用接口调…

MySQL数据生成工具mysql_random_data_load

在看MySQL文章的时候偶然发现生成数据的工具,此处直接将软件作者的文档贴了过来,说明了使用方式及下载地址 Random data generator for MySQL Many times in my job I need to generate random data for a specific table in order to reproduce an is…

Zookeeper-JavaApI操作

JavaApI操作 JavaApI操作1) Curator 介绍2) Curator API 常用操作a) 建立连接与CRUD基本操作b) Watch事件监听c) 分布式锁c.1) 介绍c.2) Zookeeper分布式锁原理c.3) 案例:模拟12306售票 JavaApI操作 1) Curator 介绍 Curator 是 Apache ZooKeeper 的Java客户端库。…

通过商品ID获取淘宝天猫商品评论数据,淘宝商品评论接口,淘宝商品评论api接口

淘宝商品评论内容数据接口可以通过以下步骤获取: 登录淘宝开放平台,进入API管理控制台。在API管理控制台中创建一个应用,获取到应用的App Key和Secret Key。构造请求URL,请求URL由App Key和Secret Key拼接而成,请求UR…

GPU 基础知识整理

萌新: 在接触一款硬件时我会:基础硬件结构,线程结构,内存布局,数据吞吐量,等方面进行学习 首先GPU的特点: 并行性能:GPU 是专门设计用于并行计算的硬件,通常具有大量的处理单元&am…

【已编译资料】基于正点原子alpha开发板的第三篇系统移植

系统移植的三大步骤如下: 系统uboot移植系统linux移植系统rootfs制作 一言难尽,踩了不少坑,当时只是想学习驱动开发,发现必须要将第三篇系统移植弄好才可以学习后面驱动,现将移植好的文件分享出来: 仓库&…

关于vue3启动的一些错误总结

一、成功解决 npm ERR! ERESOLVE could not resolve 解决办法: npm i --legacy-peer-deps –legacy-peer-deps 作用: 在NPM v7中,现在默认安装peerDependencies。 在很多情况下,这会导致版本冲突,从而中断安装过程。 …

如何通过Express和React处理SSE

本文作者为360奇舞团前端开发工程师 最近AIGC技术的大热,市面上也出现了许多类似生产的AI工具,其中有一大特色就是对话的输出结果是类似真人的打字效果出现,要呈现出这种效果,最主要的就是要利用SSE技术(Server-Sent E…