【Qt】QWidget的styleSheet属性

 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;");
}

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Qt StyleSheet是一种用于自定义Qt应用程序用户界面的技术,可以通过对QSS文件进行定义来设置控件的外观和样式。使用Qt StyleSheet,开发者可以实现自定义按钮、标签、进度条、滑块等控件的样式效果,使应用程序的外观更加美观和个性化。 在线使用Qt StyleSheet十分方便。首先,我们需要创建一个QSS文件,可以使用文本编辑器编写QSS的样式规则,定义不同控件的外观效果。然后,将QSS文件加载到Qt应用程序中,可以通过调用QWidget的setStyleSheet()函数将QSS应用到单个控件,或者使用QApplication的setStyleSheet()函数将QSS应用到整个应用程序。 在线使用Qt StyleSheet意味着我们可以实时修改QSS样式,当样式文件发生变化时,应用程序会自动刷新并应用新的样式,无需重新启动应用程序。这样,我们就可以实时调整控件的大小、颜色、字体、边框等属性,达到我们想要的效果。 Qt StyleSheet提供了丰富的样式选择器和样式属性,开发者可以根据自己的需要定义不同控件的不同状态下的样式效果。此外,Qt还提供了一些预定义的样式类和样式属性,可以直接使用或者基于其进行修改。开发者还可以通过样式继承来减少代码量,将一些共同的样式属性定义在父类样式中,子类的样式只需要定义特定的样式属性即可。 总之,Qt StyleSheet是一种非常灵活和强大的样式定义方法,可以帮助我们轻松定制和美化Qt应用程序的用户界面。在线使用Qt StyleSheet让我们能够实时调整样式效果,提高开发效率,使应用程序更加吸引人。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值