【Qt】QWidget的styleSheet属性

🏠个人主页:Yui_

🍑操作环境:Qt Creator

🚀所属专栏:Qt

文章目录

  • 前言
  • [1. styleSheet属性](#1. styleSheet属性)
  • [2. 利用styleSheet属性实现简单的日夜模式切换](#2. 利用styleSheet属性实现简单的日夜模式切换)
    • [2.1 知识补充-计算机中的颜色表示](#2.1 知识补充-计算机中的颜色表示)
  • [3. 总结](#3. 总结)

前言

style?好像前端的style标签了

其实Qt也是又CSS(Cascding Style Sheets-层叠样式表)的,CSS本身是网页前端技术,主要就是用来描述界面的样式。

所谓的样式,包括但不限于大小,位置,颜色,间距,字体,背景,边框等等。

在我们平时看到的网页,就会用到大量的CSS。

那么和Qt有什么关系呢?

Qt作为GUI开发,其实和网页前端有很多异曲同工之处,所以呢,Qt也引入了对于CSS的支持~

但是CSS中可以设置的样式属性非常多,基于这些属性Qt只能支持其中的一部分,因此可以称为QSS。

本文仅为styleSheet属性的简单介绍,后续可能会继续详细的介绍~

1. styleSheet属性

双击fromfile的ui文件

拖动一个QLabel控件到中间界面:

然后开始查看右边对象对象栏,右击label,点击改变样式表

你可以看到这样的窗口:

然后我们设置字体为宋体,字体大小为30像素,背景为蓝色。

此处的语法格式同CSS,使用键值对的方式设置样式,其中键和值之间使用:,键值之间使用;分割。

注意:Qt Designer只能对样式的基本格式进行检验,不能检查出哪些样式不被Qt支持,比如text-align: center这样的文本居中操作就无法支持~

想要知道QSS支持哪些属性,打开Qt的官方文档搜索Qt Style Sheet

如果你像要学习一些前端的知识可以看我的前端专栏~前端_Yui_的博客-CSDN博客

2. 利用styleSheet属性实现简单的日夜模式切换

在绝大部分的软件都是支持日夜模式切换的,比如我现在正在使用的obsidian中就有深色和浅色的选择:

在编写代码前,我先告诉你一些颜色的16进制表示:

  • #333是深色
  • #fff是纯白色
  • #000是纯黑色
    下面开始编写第一版的代码:
    这是ui文件,还有文本框的内容是龙族3中我非常喜欢的一章《迎着阳光盛大逃亡》中路明非带着绘梨衣去梅津寺町在玩耍了一天后中的对话,这也是路明非和绘梨衣的最后一次见面。
cpp 复制代码
#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_clicked()
{
    //切换深色模式
    this->setStyleSheet("background-color:#333");

    ui->textEdit->setStyleSheet("background-color:#333;color:#fff;");
    ui->pushButton->setStyleSheet("color:#fff");
    ui->pushButton_2->setStyleSheet("color:#fff");
}

void Widget::on_pushButton_2_clicked()
{
    //切换浅色模式
    this->setStyleSheet("background-color:#fff");

    ui->textEdit->setStyleSheet("background-color:#fff;color:#333;");
    ui->pushButton->setStyleSheet("color:#333");
    ui->pushButton_2->setStyleSheet("color:#333");
}

来看看效果吧~

有点奇怪的是,在切换深色模式前的的颜色并不是纯白,所以我们还要对浅色模式进行修改。

使用取色器得知,原本的颜色的16进制为#f0f0f0

修改浅色模式代码

cpp 复制代码
void Widget::on_pushButton_2_clicked()
{
    //切换浅色模式
    this->setStyleSheet("background-color:#f0f0f0");

    ui->textEdit->setStyleSheet("background-color:#fff;color:#333;");
    ui->pushButton->setStyleSheet("color:#333");
    ui->pushButton_2->setStyleSheet("color:#333");
}

查看效果:

2.1 知识补充-计算机中的颜色表示

众所周知,显示屏会显示颜色的都是由RGB三原色组成的,由它们构成我们看到的所有颜色。

如果你不了解,接下来让我们认识RGB
什么是RGB

我们的显示屏是由非常多的像素组成的,每个像素可以被视为一个极小的点,这个点能反映一个具体的颜色。我们使用R(red),G(green),B(blue)的方式来表示颜色,这三种颜色按照不同的比例搭配们就可以混合出各种颜色,使用称为3原色。

计算机中针对R\G\B三个的分量,分别使用一个字节表示(8个比特位,表示的范围是0-255,16进制表示00-FF).

数值越大,表示该分量的颜色就越浓,255,255,255表示白色,0,0,0表示黑色。

3. 总结

本文我们简单了解了Qt中的styleSheet属性,也就是Qt中的CSS简称QSS,因为CSS具有众多的格式,Qt只采用了其中的一部分功能,即使这样QSS也能帮我们完成不少效果~

最后推荐一个在线调色板网站:在线调色板,调色板工具,颜色选择器


往期文章:
【Qt】初始项目代码解释-CSDN博客
【Qt】HelloWorld程序-CSDN博客
【Qt-信号与槽】connect函数的用法-CSDN博客
【Qt】自定义信号和槽函数-CSDN博客
【Qt】带参数的信号和槽函数-CSDN博客
【Qt】qrc机制介绍_qt qrc是什么-CSDN博客
【Qt】QWidget属性2_qt 设置属性-CSDN博客

相关推荐
云水-禅心6 分钟前
解决MacOS 安装Python之后默认版本指向不正确问题
开发语言·python·macos
冰暮流星7 分钟前
javascript之this关键字
开发语言·前端·javascript
rit84324997 分钟前
基于Qt的串口上位机控制蓝牙小车程序
开发语言·qt
百度Geek说8 分钟前
CodingAgent 的原始森林困境:一张地图能解决什么?
开发语言·javascript·ecmascript·coding agent
sunny.day16 分钟前
js原型与原型链
开发语言·javascript·原型模式·js原型链
weixin_5231853218 分钟前
Java内存模型详解:栈、堆、方法区、本地方法栈与程序计数器
java·开发语言
换个昵称都难32 分钟前
WebRTC QoS 实战:从原理到弱网优化
开发语言·php·webrtc
luoyayun36137 分钟前
Qt/QML 音频频谱图与频谱瀑布图实现:从 PCM 到频域可视化
qt·音视频·频谱图·频谱瀑布图
爱吃生蚝的于勒40 分钟前
QT开发第三章——常用控件
linux·服务器·开发语言·前端·javascript·c++·qt
未若君雅裁43 分钟前
工厂模式详解:简单工厂、工厂方法与抽象工厂
java·开发语言