【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博客

相关推荐
啊阿狸不会拉杆2 小时前
第十五章:Python的Pandas库详解及常见用法
开发语言·python·数据分析·pandas
Antonio9154 小时前
【Q&A】QT有哪些状态模式的设计?
qt·ui·状态模式
@hdd4 小时前
QScreen 捕获屏幕(截图)
qt·屏幕捕获·qscreen
rqtz4 小时前
【C++指针】搭建起程序与内存深度交互的桥梁(下)
开发语言·c++·指针
AI让世界更懂你4 小时前
Python 包管理器 UV 全面介绍
开发语言·python·uv
IT猿手4 小时前
基于烟花算法(Fireworks Algorithm,FWA)及三次样条的机器人路径规划,50个场景任意选择,完整MATLAB代码
开发语言·算法·机器学习·matlab·机器人·无人机
SNAKEpc121384 小时前
在MFC中使用Qt(三):通过编辑项目文件(.vcxproj)实现Qt的自动化编译流程
c++·qt·mfc
厌世小晨宇yu.4 小时前
对Gpt关于泛型、Stream的提问
java·开发语言·gpt·ai
了一li5 小时前
2025年春招-Linux面经
开发语言·php
lllsure5 小时前
SpringMVC 拦截器(Interceptor)
java·开发语言·mysql