QT通过setProperty设置不同QSS样式

embedded/2025/2/9 10:11:25/

请添加图片描述
如上切换效果就是通过setProperty来实现切换不同颜色的。
实现以上效果第一步,需要在QSS中做属性处理。

QLabel{color:red;}
QLabel[status="1"]{color:black;}
QLabel[status="2"]{color:white;}
QLabel[status="3"]{color:blue;}
QLabel[status="4"]{color:skyblue;}

第二步,需要调用对应控件的setProperty。

 w->style()->unpolish(w);//卸载属性w->setProperty(name,value);//设置属性w->style()->polish(w);//加载属性w->update();

示例代码:

#include "widget.h"
#include "ui_widget.h"
#include <QStyle>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setStyleSheet("QLabel{color:red;}""QLabel[status=\"1\"]{color:black;}""QLabel[status=\"2\"]{color:white;}""QLabel[status=\"3\"]{color:blue;}""QLabel[status=\"4\"]{color:skyblue;}");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{if (ui->label->property("status").toInt() == 1)setProperty(ui->label,"status","2");else if (ui->label->property("status").toInt() == 2)setProperty(ui->label,"status","3");else if (ui->label->property("status").toInt() == 3)setProperty(ui->label,"status","4");else if (ui->label->property("status").toInt() == 4)setProperty(ui->label,"status","0");elsesetProperty(ui->label,"status","1");
}void Widget::setProperty(QWidget *w, const char *name, const QVariant &value)
{w->style()->unpolish(w);w->setProperty(name,value);w->style()->polish(w);w->update();
}

http://www.ppmy.cn/embedded/160778.html

相关文章

线性dp-建造房屋

问题描述 小蓝和小桥是两位年轻的建筑师&#xff0c;他们正在设计一座新的城市。 在这个城市中&#xff0c;有 N 条街道&#xff0c;每条街道上都有 M 个位置可以建造房屋&#xff08;一个位置只能建造一个房屋&#xff09;。建造一个房屋的费用为 1 元&#xff0c;小蓝和小桥…

DeepSeek在FPGA/IC开发中的创新应用与未来潜力

随着人工智能技术的飞速发展&#xff0c;以DeepSeek为代表的大语言模型&#xff08;LLM&#xff09;正在逐步渗透到传统硬件开发领域。在FPGA&#xff08;现场可编程门阵列&#xff09;和IC&#xff08;集成电路&#xff09;开发这一技术密集型行业中&#xff0c;DeepSeek凭借其…

2024最新版Java学习路线图--Java语言进阶重点知识

局部内部类的使用 匿名内部类的使用 匿名内部类在开发中的应用 常用API Math类及其常用方法 System类及其常用方法 Object类的toString()和equals()方法 Arrays类及其常用方法 冒泡排序的原理分析及代码实现 基本类型的包装类 自动拆箱和自动装箱 日期Date类型及其常…

Windows图形界面(GUI)-QT-C/C++ - QT Dock Widget

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、概述 二、使用场景 1. 工具栏 2. 侧边栏 3. 调试窗口 三、常见样式 1. 停靠位置 2. 浮动窗口 3. 可关闭 4. 可移动 四、属性设置 1. 设置内容 2. 获取内容 3. 设置标题 …

ubuntu 22.04 cuda12.x 上 cutensor 1.6.2 版本环境搭建

ubuntu 22.04 cuda12.x 运行 cutensor 1.6.2 sample 1.6.2 是比较久的cutensor 版本&#xff0c;但是nv对新的cuda 平台做了继续支持&#xff0c;故可以在cuda sdk 12上使用cutensor 1.6.2 1&#xff0c;下载libcutensor 1.6.2 下载 cutensor 1.6.2 for all Linux and all …

华为支付-免密支付接入签约代扣场景开发步骤

一、预签约&#xff08;服务器开发&#xff09; 1.开发者按照商户模型调用预直连商户预签约或服务商预签约接口获取preSignNo构建签约信息参数contractStr。 为保证支付订单的安全性和可靠性需要对请求body和请求头PayMercAuth对象内的入参排序拼接进行签名。请参考排序拼接和…

DeepSeek 提示词之角色扮演的使用技巧

老六哥的小提示&#xff1a;我们可能不会被AI轻易淘汰&#xff0c;但是会被“会使用AI的人”淘汰。 在DeepSeek的官方提示库中&#xff0c;有“角色扮演&#xff08;自定义人设&#xff09;”的提示词案例。截图如下&#xff1a; 在“角色扮演”的提示词案例中&#xff0c;其实…

【第一篇章】 C++ 初识

一、进门首先说 say hello 编写 helloworld.cpp 的文件&#xff0c;具体内容如下&#xff1a; #include <iostream> using namespace std; int main() {cout << "Hello, world!" << endl;return 0; }编译文件 g helloworld.cpp -o helloworld运…