前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Qt】QWidget的styleSheet属性

【Qt】QWidget的styleSheet属性

作者头像
Yui_
发布2025-03-24 11:00:43
发布2025-03-24 11:00:43
7200
代码可运行
举报
文章被收录于专栏:Yui编程知识Yui编程知识
运行总次数:0
代码可运行

前言

style?好像前端的style标签了 其实Qt也是又CSS(Cascding Style Sheets-层叠样式表)的,CSS本身是网页前端技术,主要就是用来描述界面的样式。 所谓的样式,包括但不限于大小,位置,颜色,间距,字体,背景,边框等等。 在我们平时看到的网页,就会用到大量的CSS。 那么和Qt有什么关系呢? Qt作为GUI开发,其实和网页前端有很多异曲同工之处,所以呢,Qt也引入了对于CSS的支持~ 但是CSS中可以设置的样式属性非常多,基于这些属性Qt只能支持其中的一部分,因此可以称为QSS。 本文仅为styleSheet属性的简单介绍,后续可能会继续详细的介绍~

1. styleSheet属性

双击fromfile的ui文件 拖动一个QLabel控件到中间界面:

image.png
image.png

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

image.png
image.png

你可以看到这样的窗口:

image.png
image.png

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

image.png
image.png

此处的语法格式同CSS,使用键值对的方式设置样式,其中键和值之间使用:,键值之间使用;分割。 注意:Qt Designer只能对样式的基本格式进行检验,不能检查出哪些样式不被Qt支持,比如text-align: center这样的文本居中操作就无法支持~ 想要知道QSS支持哪些属性,打开Qt的官方文档搜索Qt Style Sheet

image.png
image.png

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

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

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

image.png
image.png

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

  • #333是深色
  • #fff是纯白色
  • #000是纯黑色 下面开始编写第一版的代码: 这是ui文件,还有文本框的内容是龙族3中我非常喜欢的一章《迎着阳光盛大逃亡》中路明非带着绘梨衣去梅津寺町在玩耍了一天后中的对话,这也是路明非和绘梨衣的最后一次见面。
image.png
image.png
代码语言:javascript
代码运行次数:0
运行
复制
#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");
}

来看看效果吧~

qwidget_10.gif
qwidget_10.gif

有点奇怪的是,在切换深色模式前的的颜色并不是纯白,所以我们还要对浅色模式进行修改。 使用取色器得知,原本的颜色的16进制为#f0f0f0 修改浅色模式代码

代码语言:javascript
代码运行次数:0
运行
复制
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");
}

查看效果:

qwidget_11.gif
qwidget_11.gif

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也能帮我们完成不少效果~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1. styleSheet属性
  • 2. 利用styleSheet属性实现简单的日夜模式切换
    • 2.1 知识补充-计算机中的颜色表示
  • 3. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档