QT样式表StyleSheet(QSS)的使用与加载

Qt之加载QSS文件 Qt中关于样式的使用很常见,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种部件(例如:QLable、QLineEdit、QPushButton)的样式,最后使用QApplication进行样式加载,这样,就可以让整个应用程序就共享同一个样式。 阅读详情

1、相关链接

官网的样式表链接:http://doc.qt.io/archives/qt-4.8/stylesheet.html

各种控件的样式:http://doc.qt.io/archives/qt-4.8/stylesheet-reference.html

QSS语法:http://www.w3school.com.cn/css/css_syntax.asp

使用样式表的3种方法:《Qt 之 样式表的使用——设置样式的方法 》https://blog.youkuaiyun.com/goforwardtostep/article/details/60884870

其实本质上就两种:1、在设计师界面上直接添加,2、用程序设置

2、在设计师界面上直接添加

举例,在设计师界面拖入一个QPushButton,右击这个按钮,选择改变样式表,就会弹出添加样式的窗口;

或者,左键选中这个按钮,在右侧的属性对话框中找到StyleSheet属性,点击…按钮也可打开样式表窗口,如下图所示:
在这里插入图片描述

在打开的编辑样式表窗口直接输入“样式语句”,点击应用apply即可实时看到样式的效果,如下图所示:
在这里插入图片描述编辑样式表这个窗口可以实时提示,我们输入的qss语句语法是否正确,如果正确会在左下角提示:有效样式表,当然,这个语法检查功能非常有限,只能检查语法的格式,例如是否缺少了大括号、是否漏了冒号、分号。

2.1 注意事项

1、这里有一点比较另类,设定背景颜色background-color时,必须要同时把设置一下边框属性:如边框圆角border-radius、边框粗细等,否则背景色无法生效。

2、如上图所示,样式表可以用大括号限定作用的控件类型,比如QPushButton{ },如果不用大括号限定控件类型,那么该控件的所有子控件都会显示为父控件的样式,最典型的例子,使用容器类控件时,

例如QGroupBox,我们不用QGroupBox{ }限定qss语句的作用范围,而是直接设置其样式,那么该容器中的任何子控件(按钮、单选框、label等)都会显示为QGroupBox的样式,如下图所示:
在这里插入图片描述
由此我们还可以联想到,主窗口是所有控件的父控件,

(1)如果我们设置了主窗体的样式,而不指定作用范围,那么窗体内的所有控件都会按照主窗体的设置的样式来显示;

(2)如果我们在主窗体中设置样式时指定作用范围为QPushButton,那么该窗体内的所有QPushButton就都会显示为所设置的样式。

(3)如果父控件和子控件都设置了样式,那么子控件就按照自己的样式来显示,这是覆盖机制,因为父控件总是在子控件之前构造,子控件在构造时,会把原先的设置给覆盖掉。

3、用程序添加样式

3.1 用程序语句添加

这种方法更简单粗暴,每一个控件都有自己的setStyleSheet(QString &)成员函数,直接把方法一里面的样式语句,作为形参传入该方法即可,例如:

QString sPushButton = "QPushButton{border-radius: 10px; /*圆角半径*/color:green;/*字体颜色*/}";
ui->sPushButton_SerialSend->setStyleSheet(sPushButton);

3.2 用qss文件添加

跟3.1节的方法基本一样,唯一的不同就是,样式表的语句是从文件中读入的,而3.1节的样式语句是直接写在程序里的。

步骤如下:

1、新建一个txt文本文档,并修改后缀名为.qss,文件名任取,例如:mywidget.qss,

2、在这个qss文件中写qss语句

3、在程序中用QFile类读取该文件,并把读出的内容传递给setStyleSheet()函数

代码案例如下所示:

#include "mywidget.h"
#include "ui_mywidget.h"

#include <QFile>
#include <QMessageBox>

MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);
    this->LoadStyleSheet(":/qss/mywidget.qss");
}

MyWidget::~MyWidget()
{
    delete ui;
}

//在头文件中声明,源文件中定义,之后直接调用即可
bool MyWidget::LoadStyleSheet(const QString &StyleSheetFile)
{
    QFile ofile(StyleSheetFile);
    bool Ret = ofile.open(QFile::ReadOnly);

    if (!Ret)
    {
         QMessageBox::information(this,"Tip",ofile.errorString());
         return false;
    }

    this->setStyleSheet(ofile.readAll());
    ofile.close();

    return true;
}

mywidget.qss文件的内容如下:

QTimeEdit
{
font-size: 16px;
background-color: white;
border-style: solid;
border-width: 1px;
border-color: rgb(100,100,100);
spacing: 5px;
}

QTimeEdit::drop-down {
width: 50px;                   //宽度(高度随控件)
border-left-width: 1px;   //加左边框线(可以不要,下同)
border-left-style: solid;  //左边框线类型
border-left-color: gray;  //左边框线颜色
}

3.2.1引用qss文件的外部路径

加载qss文件时,需要指定文件路径(一般是相对路径),如果把qss文件放在磁盘上,文件暴露在用户眼皮底下,可能会被用户随意修改,解决方法就是把qss文件作为资源,一起打包进exe文件中。

3.2.2引用qss文件的资源路径

步骤如下:

1、在qt左侧目录树的顶层文件夹上右击->添加新文件->选择QT->QT resource file->choose,输入自定义资源文件的名字resource->选择资源文件的存放路径->在resource目录创建对应的文件夹(比如qss和image)->下一步->ok,这样就可以在目录树中看到一个文件 res.qrc。(如果已经创建过资源文件,则跳过该步)

2、右击res.qrc文件->open in editor,如果打不开则选->open with->资源编辑器,在打开的资源编辑器中,点击添加->前缀->修改前缀为/, 再点击添加->添加现有文件->添加上选中我们上面做好的qss文件(在对应的目录中)。完成后效果如下图所示。

3、写程序时需要读取该文件时,右击这个qss文件,选择复制url,即可复制本文件的资源路径,非常方便。

在这里插入图片描述

Qt中我们可以通过添加QSS文件来为界面添加样式,这样可以提高界面的美观度和可读性。下面我将分享如何加载QSS文件的方法。 Qt中我们可以通过添加QSS文件来为界面添加样式,这样可以提高界面的美观度和可读性。下面我将分享如何加载QSS文件的方法。通过以上方法,我们就可以方便地在Qt中加入QSS文件,并为程序的UI增添不同的风格。一、在Qt Designer中添加QSS文件。二、在Qt代码中加载QSS文件。 阅读详情

相关推荐

Qt工作经验-解决Qt加载速度缓慢的问题

通过优化资源文件加载、延迟加载非必要模块和使用动态链接库,我们可以加快Qt应用程序的启动速度。然而,有时候我们可能会遇到Qt加载速度缓慢的问题,这可能会影响应用程序的用户体验。如果资源文件中包含大量的资源项或者资源项过大,加载资源文件的时间可能会较长。Qt框架提供了动态链接库(DLL)的支持,可以将应用程序的逻辑和界面分离为不同的模块,从而减少启动时间。通过使用动态链接库,我们可以将常用的模块预先编译为共享库,并在应用程序启动时加载它们。如果我们在应用程序启动时加载了大量的模块,会导致启动时间变长。

FucMobile的博客 2379

我的QT Creator学习笔记(十九)——Qt样式表

Qt样式表的术语和语法规则与HTML CSS基本相同。 一、样式规则 样式表包含了一系列的样式规则,每个样式规则由选择器(Sekector)和声明(declaration)组成。选择器制定了受规则影响的部件,声明指定了这个部件上药设置的属性。例如: QPushButton{color:red}这个规则指定了QPushButton和它的子类使用红色作为前景色。多个选择器(用逗号隔开)可以指定相同的声明,如下 QPuButton,QLineEdit,QComBox{color:red} 声明部分也可以

sinat_41928334的博客 2853

Qt 之加载 QSS 文件

Qt中关于样式的使用很常见,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种部件(例如:QLable、QLineEdit、QPushButton)的样式,最后使用QApplication进行样式加载,这样,就可以让整个应用程序就共享同一个样式。

青春不老,奋斗不止! 4万+

Qt样式表(StyleSheet)学习

转自:QT之样式表(样式表规则以及使用大全) 1、QT样式表可以让你自定义任何一个QT控件的样式包括颜色、边框、背景等等(你想的到样式都可以),Qt样式表的概念、术语和语法与HTML的CSS样式表类似。 2、样式表是文本规范, (1) QApplication::setStyleSheet()在整个应用程序上设置,一般在main()函数中: QFile file(":/qss/abc.qss"); //工程控件样式表需要在qss/abc.qss里面 file.open(QFile::ReadOnly);

qq_38340979的博客 4135

QT样式表StyleSheet的使用与加载

QT样式表是一种强大的工具,可用于定义和修改QT应用程序的外观。通过加载样式表文件或将样式表应用于特定控件,我们可以轻松地定制QT应用程序的外观。通过使用样式表,我们可以轻松地定制QT控件的外观,包括字体、颜色、边框、背景等。它将按钮的背景颜色设置为红色,文本颜色设置为白色,边框设置为2像素的黑色实线,并在按钮周围添加5像素的内边距。在上述代码中,我们在创建QPushButton控件时直接调用了setStyleSheet()方法,并将样式表作为参数传递给该方法。QT样式表StyleSheet的使用与加载。

DevNinja的博客 591

【G4基础03】2.3 How to Specify Materials in the Detector

定义探测器材料

adelall的博客 489

Qt stylesheet 源码学习

stylesheet 本文不准备谈样式表的使用。因为Manual中介绍的很清楚了,给的例子也都很不错。再就是我本身对CSS语法不太熟,术语把握不好,qss用的不多。 不过,有两个问题新手似乎特容易迷惑,简单提一下: QWidget直接派生类的样式表不起作用 典型的表述(之一)是,从QWidget派生一个窗口,使用stylesheet设置背景,在designer中可以看到...

tomhibolu 827

别再让信号‘撞墙’了!手把手教你用嘉立创阻抗计算器搞定PCB高速线(附免费压层结构选择)

本文详细介绍了如何使用嘉立创阻抗计算器解决PCB高速线设计中的阻抗匹配问题,避免信号反射和传输损耗。通过免费压层结构选择和五步计算法,帮助工程师快速掌握USB3.0差分线等高速信号的设计技巧,提升PCB设计效率和信号质量。

weixin_30736301的博客 278

qt加载qss的方法

1. 如下图 ,右击qtTest 选择添加新文件        2. 在弹出的对话框选择Qt----------> Qt  Resource  File         3.  名称为resource                4. 此时项目结构图为:     5.在main.cpp所在目录新建一个空的txt文件,命名为stylesheet.qss,

风云的的博客 2万+

达梦的自定义类型和存储过程支持创建同义词,不支持同义词使用?

达梦8的自定义类型和存储过程支持创建同义词,但是通过同义词调用报错,而在oracle上验证没有问题,难道是发现了达梦的bug了?非也非也,详情请见下文

wy071218的专栏 979

基于FPGA的工业相机项目大赏1——cmos线阵相机

●CMOS CL0402 作为图像传感芯片,曝光后产生一定格式的图像数据;●FPGA ZYNQ7020 作为主控芯片负责cmos驱动控制、图像像素的采集、cmos寄存器的配置、cameralink协议的实现、上位机串口通信的实现;●Cameralink端子实现图像数据的高速串行发送,将数据传送至采集卡PC端。系统工作流程如下: FPGA 上电加载配置程序,计算机通过异步串口向 FPGA 发送控制信息,FPGA对接收的控制信息进行分析判断。

weixin_41895751的博客 6399

【QT】界面优化

也可在UI界面添加指定控件的stylesheet。

yuan________的博客 229

视觉巡线小车(STM32+OpenMV)——技术总结

在现代机器人技术中,视觉巡线是一种常见的导航方式,它允许机器人通过识别和跟踪地面上的线路来自主导航。本文将总结使用STM32微控制器和OpenMV视觉模块来实现视觉巡线小车的关键技术和步骤。

weixin_66608063的博客 3077

如何加载Qt样式表

首先添加资源文件 Qt->项目->add new。然后选中Qt Qt->Resource File。在设计器左下角属性中找到 styleSheet属性可以更改样式。右键qss获取url路径。在代码中读取资源文件,测试效果。接着刷新下,在项目找到看到qrc。鼠标右击控件选择改变样式表,可以编译样式。添加自己写好的qss文件(QSS语法略)

m0_51409578的博客 982

如何学习总线技术

如何学习总线技术 以形象生动的比喻来描绘了总线技术的基本思想,指出了总线的基本分类和总线传输的基本原理,以及在学习过程中应当掌握的最基本的知识,对初学者有起到抛砖引入的作用。 0引言   如果一座只能容一个人来往的独木桥,两端的人都想要过桥,为了不拥挤、阻塞,那我们就得采取有效的办法。比如规定某段时间哪端的人过桥,另一端的人就等着该他过桥的时间段的到来,同时也还可以规定人多时要按先来后到或年

ce123的技术博客 8527

302.QoS实现工具之MQC

QoS 技术可以对网络中报文进行分类处理,根据优先级提供不同的差分服务,如何实现这种差分服务呢?我们有一种强大的配置方法 - 模块化 QoS 命令行 MQC(Modular QoS Command-Line)。下面就来介绍一下 MQC。

迷逝 1391

QT设置qss

Qt设置qss文件(qrc中)

海棠半载的博客 2080

基于 MATLAB 的 FastICA 算法实现语音信号盲分离

FastICA 算法通过最大化信号的非高斯性,找到独立成分,从而实现信号的分离。这些混合的信号被称为盲源信号,我们希望通过分析混合信号,将它们分离出来以便进行进一步的处理和分析。FastICA 是一种常用的盲源信号分离算法,它基于统计学原理,通过寻找独立成分来实现信号的分离。FastICA(独立成分分析)是一种常用的盲源信号分离算法,在语音和图像处理领域都有广泛的应用。本文将介绍如何使用 MATLAB 实现 FastICA 算法来实现语音信号的盲分离,并提供相应的源代码。FastICA 算法原理。

学习使你进步。 2024

qt stylesheet 隐藏_在qt中使用stylesheet,真的很方便

我的程序QT Creator下,建空GUI项目,添加一个Widget,然后设计界面:最下面的是Widget,上一层放一个frame,用lineEdit,pushButton排列成这效果就行。接下来添加StyleSheet,创建一个资源文件(.qrc),比如reso.qrc,首先add一个prefix然后再add你的stylesheet文件进去,注意文件在程序代码中使用的时候,应该在其名字前将pre...

weixin_42197129的博客 866

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

图文讲解:QT样式表StyleSheet的使用与加载

目录 0、相关链接 1、在设计师界面上直接添加 1.1 注意事项 2、用程序添加样式 2.1 用程序语句添加 2.2用qss文件添加 2.2.1引用qss文件的外部路径 2.2.2引用qss文件的资源路径 3、样式表选择器 0、相关链接 官网的样式表链接:http://doc.qt.io/archives/qt-4.8/stylesheet.html 各种控件的样式...

野生猿-群号1025127672 4万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

qt样式表设置边框_图文讲解:QT样式表StyleSheet的使用与加载

目录0、参考链接1、设计师界面添加样式1.1 几点注意事项2、用程序添加样式2.1 用程序语句添加2.2 用qss文件添加2.2.1 引用qss文件的磁盘路径2.2.2 引用qss文件的资源路径0、相关链接官网的样式表链接:http://doc.qt.io/archives/qt-4.8/stylesheet.html各种控件的样式:http://doc.qt.io/archives/qt-4.8...

weixin_28710999的博客 1711

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

QMainwindows 中QToolbar的QSS样式表和相关设置

QMainwindows 中QToolbar的QSS样式表和相关设置 QMainwindows 中使用了Dock widget area 去掉Qmenu和QToolbar的分割线 通过QSS样式表的方式才能解决 /*StyleSheet样式表*/ QToolBar { background-color: #333333; border: none; padding: 1px; } QToolBar::separator { width: 0px; background-color

zxy5691419的专栏 6331

【QT】界面优化:QSS

QSS是Qt框架专属界面样式描述语言,设计思路借鉴前端CSS,核心用于Qt各类控件的界面美化,从文字颜色、边框圆角、背景图片到悬浮、点击等交互状态都能通过QSS实现。遵循从基础语法→代码挂载形式→工程化样式解耦→各类选择器语法→盒模型底层原理→全控件实战落地的学习逻辑,覆盖从零散行内硬编码样式,到独立QSS资源文件管理、Qt Designer内嵌UI样式三种工业级开发方案;

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 3650

QT_QPA_STYLESHEET 指定 Qt 应用程序加载的 QSS(Qt Style Sheets) 文件路径

QT_QPA_STYLESHEET 指定 Qt 应用程序加载的 QSS(Qt Style Sheets) 文件路径

xie__jin__cheng的博客 469
上一篇: 几个简单的基本的sql语句
下一篇: C++栈上和堆上创建对象的区别
自先沉稳~
博客等级 码龄8年 59粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值