【Qt】QWidget的styleSheet属性

news2024/11/15 19:48:58

 QWidget的styleSheet属性

通过CSS设置widget的样式。

样式具体描述了界面具体是什么样子的。

CSS (Cascading Style Sheets 层叠样式表)

在进行网页开发的时候,设置网页样式的方式。本⾝属于⽹⻚前端技术. 主要就是⽤来描述界⾯的样式。CSS已经发展多年,非常成熟,能够提供非常丰富的功能,把网页设置的非常好看。

CSS 中可以设置的样式属性⾮常多. 基于这些属性 Qt 只能⽀持其中⼀部分, 称为 QSS (Qt Style Sheet). 具体的⽀持情况可以参考 Qt ⽂档中 "Qt Style Sheets Reference" 章节.

        虽然QSS相比CSS来说,功能上缺失很多,但是依旧可以完成不少的效果。可以通过styleSheet属性初步演示。

例子:设置文本样式

和CSS一样,QSS设置的样式也是键值对的格式:

键和值之间使用 : 分隔

键值对和键值对之间使用 ; 分隔

在Qt的文档中详细介绍QSS相关内容,在Qt文档中搜索Qt Style Sheet即可。

例子:通过代码来设置样式,实现一个“夜间模式”功能。

日间模式:文字是黑色,背景是白色

夜间模式:文字是白色,背景是黑色

在Qt Designer多行输入框和俩个按钮,并修改名字。

【注意】字符串中的单词要注意拼写正确,如果出现拼写错误,不会有任何报错,但是样式不会生效。

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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

//日间模式
void Widget::on_pushButton_light_clicked()
{
    //设置窗口样式
    this->setStyleSheet("background-color: white;");
    //设置输入框的样式
    ui->plainTextEdit->setStyleSheet("background-color: white; color: black;");
    //设置按钮样式
    ui->pushButton_light->setStyleSheet("color: black;");
    ui->pushButton_dark->setStyleSheet("color: black;");
}
//夜间模式
void Widget::on_pushButton_dark_clicked()
{
    //设置窗口样式
    this->setStyleSheet("background-color: black;");
    //设置输入框样式
    ui->plainTextEdit->setStyleSheet("background-color: black; color: white;");
    //设置按钮样式
    ui->pushButton_light->setStyleSheet("color: white");
    ui->pushButton_dark->setStyleSheet("color: white;");
}

这里的日间模式与夜间模式与刚出现的默认模式均不相同。

【注意】首先应该清楚,在计算机中如何表示的?

CSS/QSS是可以直接使用单词来设置颜色的:white、black、red、green、blue、yellow。

在计算机中,使用RGB的方式来表示颜色(光的三原色)。

在计算机中,通常会使用一个字节来表示R,一个字节表示G,一个字节表示B。

最终表示一个颜色,就是使用:
(1)rgb(255,0,255)

r是255,g是0,b是255

(2)#FF00FF

R是FF红色拉满,G是00绿色没有,B是FF蓝色拉满。

那么Widget的初始背景色的数值是多少呢?

可以通过“取色器”,来获取屏幕上的颜色(Photoshop)

可以通过QQ截图自带的取色器来获取颜色。

关于计算机中的颜⾊表⽰

计算机中使⽤ "像素" 表⽰屏幕上的⼀个基本单位(也就是⼀个发亮的光点).

每个光点都使⽤三个字节表⽰颜⾊, 分别是 R (red), G (green), B (blue) ⼀个字节表⽰ (取值范围是 0-255, 或者 0x00-0xFF).

混合三种不同颜⾊的数值⽐例, 就能搭配出千千万万的颜⾊出来.

  • rgb(255, 0, 0) 或者 #FF0000 或者 #F00 表⽰纯红⾊.
  •  rgb(0, 255, 0) 或者 #00FF00 或者 #0F0 表⽰纯绿⾊.
  •  rgb(0, 0, 255) 或者 #0000FF 或者 #00F 表⽰纯蓝⾊.
  • rgb(255, 255, 255) 或者 #FFFFFF 或者 #FFF 表⽰纯⽩⾊.
  • rgb(0, 0, 0) 或者 #000000 或者 #000 表⽰纯⿊⾊.

当然, 上述规则只是针对⼀般的程序⽽⾔是这么设定的. 实际的显⽰器, 可能有 8bit ⾊深或者

10bit ⾊深等, 实际情况会更加复杂

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

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

//日间模式
void Widget::on_pushButton_light_clicked()
{
    //设置窗口样式
    this->setStyleSheet("background-color: rgb(240, 240, 240);");
    //设置输入框的样式
    ui->plainTextEdit->setStyleSheet("background-color: white; color: black;");
    //设置按钮样式
    ui->pushButton_light->setStyleSheet("color: black;");
    ui->pushButton_dark->setStyleSheet("color: black;");
}
//夜间模式
void Widget::on_pushButton_dark_clicked()
{
    //设置窗口样式
    this->setStyleSheet("background-color: black;");
    //设置输入框样式
    ui->plainTextEdit->setStyleSheet("background-color: black; color: white;");
    //设置按钮样式
    ui->pushButton_light->setStyleSheet("color: white");
    ui->pushButton_dark->setStyleSheet("color: white;");
}

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

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

相关文章

10 个 C# 关键字和功能

在 Stack Overflow 调查中,C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序,范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能,对于开发人员来说,要跟上新功能发布的最新信息将是一项艰巨的任务。本…

PYQT实现上传图片,保存图片

代码如下 from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import sysclass MyWindow(QMainWindow):def __init__(self):super(MyWindow, self).__init__()self.setWindowTitle("图片处理")self.setGeometry(200, 200, 500, …

Unity的物理系统

目录 3D 物理系统 主要组件 2D 物理系统 主要组件 物理引擎的选择与应用 物理模拟的控制与优化 Unity中Nvidia PhysX引擎与Box2D引擎在性能和功能上的具体比较是什么? 如何在Unity项目中实现Havok物理引擎,并与PhysX或Box2D引擎结合使用&#xf…

C/C++跳动的爱心代码

系列文章 序号直达链接1C/C爱心代码2C/C跳动的爱心3C/C李峋同款跳动的爱心代码4C/C满屏飘字表白代码5C/C大雪纷飞代码6C/C烟花代码7C/C黑客帝国同款字母雨8C/C樱花树代码9C/C奥特曼代码10C/C圣诞树代码 写在前面 C语言实现简单版的跳动的红色爱心。 语言需求:C语…

pdf翻译成中文的工具有哪些?pdf翻译商务学习两不误

在全球化日益加深的今天,pdf文档的国际交流愈发频繁,但语言障碍却常常让人头疼。 别担心,寻找一款可靠的pdf翻译成中文在线软件,已成为解决这一难题的关键。 今天,就让我们一起探索五款强大的pdf翻译器,它…

二叉搜索树的遍历方法

前序遍历 访问顺序 根子树->左子树->右子树 首先访问根节点&#xff0c;然后递归的前序遍历左子树&#xff0c;最后递归的前序遍历右子树 void preOrder(TreeNode* node) { if (node nullptr) return; cout << node->val << ; // 访问根节点 pre…

系统编程-文件操作和时间编程

3 文件操作和时间编程 目录 3 文件操作和时间编程 一、时间编程 1、有关时间的shell命令 2、时间API &#xff08;1&#xff09;获取日历时间 &#xff08;2&#xff09;将日历时间转化为本地时间 &#xff08;3&#xff09;将日历时间转化为格林威治时间 &#xff08…

【通过禁用任务管理器实现进程保活】(bat)

效果展示 上代码&#xff0c;球球给我点个关注吧 该程序的操作实际是开启后挂在后台循环100万次 kill掉taskmgr.exe的命令的bat脚本 echo off if "%1""hide" goto CmdBegin start mshta vbscript:createobject("wscript.shell").run(""…

git 学习--GitHub Gitee码云 GitLab

1 集中式和分布式的区别 1.1 集中式 集中式VCS必须有一台电脑作为服务器&#xff0c;每台电脑都把代码提交到服务器上&#xff0c;再从服务器下载代码。如果网络出现问题或服务器宕机&#xff0c;系统就不能使用了。 1.2 分布式 分布式VCS没有中央服务器&#xff0c;每台电脑…

基于Java+SpringBoot+Vue的体育馆管理系统的设计与实现

基于JavaSpringBootVue的体育馆管理系统的设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&…

JavaScript初级——基础知识

一、JS的HelloWord 1、JS的代码需要编写到script标签中 2、JS的执行是根据语句从上到下一次执行的。 二、JS的编写位置 1、可以将js代码编写到标签的onclick属性中&#xff0c;当我们点击按钮时&#xff0c;js代码才会执行。 2、可以将js代码写在超链接的href属性中&#xff0…

fastzdp_sqlmodel新增get_first和is_exitsts方法

说明 经过fastzdp_login的整合&#xff0c;我们发现&#xff0c;fastzdp_sqlmodel还可以继续封装两个便捷的方法。 get_first&#xff1a;获取查询结果集中的第一条数据is_exitsts&#xff1a;判断数据是否已存在 封装get_first方法 def get_first(engine, model, query_di…

优化算法|牛顿-拉夫逊优化算法(NRBO)详解

算法介绍 本篇推文将介绍一种新的智能优化算法&#xff0c;牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO)&#xff0c;该成果由学者Sowmya等人于2024年2月发表于期刊《Engineering Applications of Artificial Intelligence》。文末提供了原文作者的完整代码git…

【python爬虫】邮政包裹物流查询2瑞数6加密

大家好呀&#xff0c;我是你们的好兄弟【星云牛马】&#xff0c;今天给大家带来的是瑞数6的补环境的总结&#xff0c;补环境肯定是需要一些基础补环境知识的&#xff0c;所以建议没有基础的小伙伴可以加入学习群进行学习&#xff0c;有基础的伙伴加入交流起来。 QQ群&#xff…

《向量数据库指南》——AI应用部署落地与权限安全差别

部署落地与权限安全差别 RAG部署有许多系统化优化点 RAG分化程度非常高,因为RAG是许多东西的组成,类似大数据生态,里边有非常多的环节,从数据抓取、数据清洗、数据挖掘,然后预处理,再经过模型分析,比如说embedding模型生成向量,然后再做数据的持久化,serving stack,就…

打卡学习Python爬虫第二天|数据解析Re 正则表达式

在前面的学习中&#xff0c;我们已经基本掌握了抓取整个网页的基本技能&#xff0c;但是在实际的需求当中&#xff0c;我们不需要整个网页的内容&#xff0c;只需要一小部分。这就涉及到数据提取的问题。 三种数据解析的方式&#xff1a;可混合使用 1、re解析 2、bs4解析 3…

无人机低成本集群技术实现详解

在现代科技的迅猛发展中&#xff0c;无人机技术已广泛应用于军事侦察、环境监测、农业植保、物流配送等多个领域。其中&#xff0c;无人机集群技术作为提高任务效率、降低成本的重要手段&#xff0c;正受到越来越多的关注。本项目旨在研发一套低成本无人机集群系统&#xff0c;…

<C语言>指针的深度学习

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.&数组名与数组名 3.数组指针的使用 四、数组参数、指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 六、函数指针数组 七、指向函数指针数组的指针 八、回调函数 1…

微信云开发云存储全部下载

一、安装 首先按照这个按照好依赖 安装 | 云开发 CloudBase - 一站式后端云服务 npm i -g cloudbase/cli 二、登录 tcb login 下载 首先在你要下载到的本地文件内创建一个名为&#xff1a;cloudbaserc.json 的json文件。 填入你的id {"envId":"你的云开发环…

STM32基础篇:定时器 × 时基单元

定时器简介 定时器是一种专门负责定时功能的片上外设。F1系列的单片机最多有14个定时器&#xff08;TIM1~TIM14&#xff09;&#xff0c;具体如下表&#xff1a; 类型外设名称基本定时器TIM6和TIM7通用定时器TIM2~TIM5和TIM9~TIM14高级定时器TIM1和TIM8 基本定时器是功能最简…