Qt动态设置样式,实现样式实时切换

文章目录

    • 概要
      • 插件实现界面
    • 核心代码
      • 设置样式
    • 扩展
      • 导入样式
      • 导出样式

概要

最近需要设计界面,但是使用Qt的Designer只能看到每个界面单独的样式,程序中有些事需要主界面调用进行组合的界面,因此需要写一个插件Ui可以直接输入样式内容,进行实时设置,查看样式效果。

插件实现界面

  • 应用样式前

在这里插入图片描述

  • 应用样式后
    在这里插入图片描述

核心代码

设置样式

void SetSheetStyle::on_pbtn_Apply_clicked()
{qApp->setStyleSheet(ui->pte_SheetStyle->toPlainText());qApp->style()->unpolish(qApp);    qApp->style()->polish(qApp);
}

详解:
设置样式代码为:A->setStyleSheet(ui->pte_SheetStyle->toPlainText());
如果为程序全局设置则A为qApp;
如果为特定的Ui控件设置则A为控件名。

注意:
当程序已经设置了样式之后,再次设置样式必须添加
qApp->style()->unpolish(qApp);
qApp->style()->polish(qApp);
这两行代码,因为给qApp设置样式前,需要卸载当前样式,之后安装样式才能生效


扩展

我上面的实现里面添加了导入外部的样式表和将当前样式表导出为qss文件的功能,如需,可以添加。

导入样式

void SetSheetStyle::on_pbtn_importQss_clicked()
{// 1. 获取打开路径QString path = QCoreApplication::applicationDirPath();QString fileName = QFileDialog::getOpenFileName(nullptr,                   // 父窗口"打开文件",                // 对话框标题path,          // 默认目录"文本文件 (*.txt);;所有文件 (*)" // 文件过滤器);// 检查用户是否取消了对话框if (fileName.isEmpty()) {QMessageBox::warning(nullptr, "警告", "未选择文件路径!");return;}// 2. 创建并打开文件QFile file(fileName);if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {QMessageBox::critical(nullptr, "错误", "无法打开文件:" + file.errorString());return;}// 3. 读取内容QTextStream in(&file);QString str = in.readAll();// 4. 关闭文件(QFile析构时会自动关闭,但显式关闭更好)file.close();// 5. 显示到文本框ui->pte_SheetStyle->setPlainText(str);}

导出样式

void SetSheetStyle::on_pbtn_ExportQss_clicked()
{   // 1. 获取保存路径QString path = QCoreApplication::applicationDirPath();QString fileName = QFileDialog::getSaveFileName(nullptr,                   // 父窗口"保存文件",                // 对话框标题path,          // 默认目录"文本文件 (*.txt);;所有文件 (*)" // 文件过滤器);// 检查用户是否取消了对话框if (fileName.isEmpty()) {QMessageBox::warning(nullptr, "警告", "未选择文件路径!");return;}// 2. 创建并打开文件QFile file(fileName);if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {QMessageBox::critical(nullptr, "错误", "无法创建文件:" + file.errorString());return;}// 3. 写入内容/*QTextStream out(&file);out << str.data();*/QString str = ui->pte_SheetStyle->toPlainText();const char* data = str.toStdString().c_str();file.write(data);// 4. 关闭文件(QFile析构时会自动关闭,但显式关闭更好)file.close();// 可选:提示成功QMessageBox::information(nullptr, "成功", "文件已保存至:" + fileName);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集成学习之随机森林

目录 一、集成学习的含义 二、集成学习的代表 三、集成学习的应用 1、分类问题集成。&#xff08;基学习器是分类模型&#xff09; 2、回归问题集成。&#xff08;基学习器是回归模型&#xff09; 3、特征选取集成。 四、Bagging之随机森林 1、随机森林是有多个决策树&a…

矩阵期望 E 的含义:概率

矩阵期望 E 的含义:概率 期望的含义 在概率论和统计学中,数学期望(或均值,简称期望)是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一,它反映随机变量平均取值的大小。用公式表示,如果离散型随机变量 X X X 可能取值为 x i x_

Qt Graphics View

Graphics View框架是用来处理大量2D图形对象的&#xff0c;适合需要高效管理和交互的场景&#xff0c;比如绘图软件、地图编辑或者游戏。它和QPainter的区别在于&#xff0c;Graphics View提供了更高级别的对象管理&#xff0c;而QPainter更偏向于直接绘制。 一、核心组件 ‌Q…

卷积神经网络 - 卷积层(具体例子)

为了更一步学习卷积神经网络之卷积层&#xff0c;本文我们来通过几个个例子来加深理解。 一、灰度图像和彩色图像的关于特征映射的例子 下面我们通过2个例子来形象说明卷积层中“特征映射”的概念&#xff0c;一个针对灰度图像&#xff0c;一个针对彩色图像。 例子 1&#x…

xlsx.utils.json_to_sheet函数详解

xlsx.utils.json_to_sheet 是 xlsx 库中的一个实用函数&#xff0c;用于将 JSON 数据转换为 Excel 工作表对象。这个函数非常有用&#xff0c;尤其是在你需要从数据库或其他数据源获取数据并将其导出到 Excel 文件时。 函数签名 XLSX.utils.json_to_sheet(data, opts)data&am…

2025-03-17 学习记录--C/C++-PTA 习题4-7 最大公约数和最小公倍数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题4-7 最大公约数和最小公倍数 本题要求两个给定正整数的最大公约数和最小公倍数。 输入格式: 输入在一…

【源码阅读】多个函数抽象为类(实现各种类型文件转为PDF)

目录 一、原始函数二、类三、转换过程 一、原始函数 最开始就是写了几个函数&#xff08;包括doc、excel、ppt类型的文件&#xff09;转换为pdf&#xff0c;需要将这些函数形成一个类。相似的一类函数就可以组成一个实现特定功能的类 import subprocess import pandas as pd i…

VSCode扩展工具Copilot MCP使用教程【MCP】

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09; &#xff0c;2024年11月底&#xff0c;由 Anthropic 推出的一种开放标准&#xff0c;旨在统一大型语言模型&#xff08;LLM&#xff09;与外部数据源和工具之间的通信协议。本文章教你使用VSCode…

【leetcode100】搜索插入位置

1、题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2…

【小白向】Word|Word怎么给公式标号、调整公式字体和花括号对齐

【小白向】Word&#xff5c;Word怎么给公式标号、调整公式字体和花括号对齐 我的版本&#xff1a;Word 2021 如需快速查看关键步骤&#xff0c;请直接阅读标红部分。 如果遇到无法调整的情况&#xff0c;可以直接下载我的示例文档进行参考&#xff1a;花括号和其他的示例公式.…

【算法day15】最接近的三数之和

最接近的三数之和 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 这里是引用 返回这三个数的和。 假定每组输入只存在恰好一个解。 https://leetcode.cn/problems/3sum-closest/submissions/61…

Blender-MCP服务源码5-BlenderSocket插件安装

Blender-MCP服务源码5-BlenderSocket插件安装 上一篇讲述了Blender是基于Socket进行本地和远程进行通讯&#xff0c;现在尝试将BlenderSocket插件安装到Blender中进行功能调试 1-核心知识点 将开发的BlenderSocket插件安装到Blender中 2-思路整理 1&#xff09;将SocketServe…

【MySQL数据库】存储过程与自定义函数(含: SQL变量、分支语句、循环语句 和 游标、异常处理 等内容)

存储过程&#xff1a;一组预编译的SQL语句和流程控制语句&#xff0c;被命名并存储在数据库中。存储过程可以用来封装复杂的数据库操作逻辑&#xff0c;并在需要时进行调用。 类似的操作还有&#xff1a;自定义函数、.sql文件导入。 我们先从熟悉的函数开始说起&#xff1a; …

ASP3605抗辐照加固同步降压调节器——商业航天电源芯片解决方案新选择

ASP3605企业宇航级型号ASP3605S2U通过SEU≥75 MeVcm/mg与SEL≥75 MeVcm/mg抗辐射测试。其输入电压4V至15V&#xff0c;输出电流5A&#xff0c;支持多相级联与冗余设计&#xff0c;适用于卫星、航天器电源系统。 面向航天场景的核心功能设计 1. 抗辐射与可靠性保障 单粒子效应…

使用fastapi部署stable diffusion模型

使用vscode运行stable diffusion模型&#xff0c;每次加载模型都需要10分钟&#xff0c;为算法及prompt调试带来了极大麻烦。使用jupyter解决自然是一个比较好的方案&#xff0c;但如果jupyter由于种种原因不能使用时&#xff0c;fastapi无疑成为了一个很好的选择。 参考github…

2025-03-16 学习记录--C/C++-PTA 习题4-4 特殊a串数列求和

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 习题4-4 特殊a串数列求和 给定两个均不超过9的正整数a和n&#xff0c;要求编写程序求aaaaaa⋯aa⋯a&#x…

ffmpeg库视频硬编码使用流程

‌一、硬件编码核心流程‌ ‌硬件设备初始化 // 创建CUDA硬件设备上下文‌ AVBufferRef *hw_device_ctx NULL; av_hwdevice_ctx_create(&hw_device_ctx, AV_HWDEVICE_TYPE_CUDA, NULL, NULL, 0);// 绑定硬件设备到编码器上下文‌ codec_ctx->hw_device_ctx av_buffer_…

【设计模式】3W 学习法全面解析 7 大结构型模式:Java 实战 + 开源框架应用

3W 学习法总结结构型模式&#xff08;附 Java 代码实战及开源框架应用&#xff09; 结构型模式 主要关注 类与对象的组合&#xff0c;确保不同组件之间能够高效协作&#xff0c;提高系统的灵活性和可维护性。本文采用 3W 学习法&#xff08;What、Why、How&#xff09;&#x…

在大数据开发中ETL是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济时代&#xff0c;数据已成为企业最核心的资产。然而&#xff0c;分散在业务系统、日志文件…

前端面试项目拷打

Axios相关 1.在Axios二次封装时&#xff0c;具体封装了哪些内容&#xff0c;如何处理请求拦截和响应拦截&#xff1f; axios二次封装的目的&#xff1a;为了统一处理请求和响应拦截器、错误处理、请求超时、请求头配置等&#xff0c;提高代码可维护性和复用性。 首先创建axios…