当前位置: 首页 > wzjs >正文

中劵资本集团股票交易网站建设中有服务器怎么做网站教程

中劵资本集团股票交易网站建设中,有服务器怎么做网站教程,用dw制作个人网站,网络营销优秀案例项目简介 能在软件运行时对 CSS 样式表主题(包括 SVG 资源和 SVG 图标)进行实时颜色切换的Qt项目。 项目预览: 项目地址 地址:Qt-Advanced-Stylesheets 本地编译环境 Win11 家庭中文版 Qt5.15.2 (MSVC2019) Qt Creator1…

项目简介

能在软件运行时对 CSS 样式表主题(包括 SVG 资源和 SVG 图标)进行实时颜色切换的Qt项目。

项目预览:
1
2

项目地址

地址:Qt-Advanced-Stylesheets

本地编译环境

Win11 家庭中文版

Qt5.15.2 (MSVC2019)

Qt Creator15.0.1

本地编译

克隆到本地后,直接使用Qt Creator打开.pro,选择full_features项目编译运行即可。
3
4
5

一键换肤功能解析

一键换主题皮肤如何实现?

首先通过.ui文件可以看到,使用的都是Qt提供的标准控件,无其他自定义控件:

6

风格主配置文件:./styles/qt_material/material.json

主要定义程序图标、完整CSS文件、主题、图标颜色以及调色版palette相关配置。
7

主题配置文件:./styles/qt_material/themes/*.xml

配置dark、light主题及其下各级标题的颜色。
8

完整CSS文件:./styles/qt_material/material.css.template

就是配置界面中控件样式,不过颜色确实根据不同主题配置文件中定义的颜色变量。
9

至此可以确认一键换肤的大致实现框架:风格 -> 主题 -> CSS样式

①读取风格主配置文件 (./styles/qt_material/material.json),加载对应的程序图标、CSS样式、默认主题以及调色板相关配置。

②读取默认主题配置文件 (./styles/qt_material/themes/dark_teal.xml),获取各级主题对应色值配置。

③读取CSS文件,应用②中读取色值并实际应用控件样式。

④对于当前风格(即./styles/qt_material),切换不同主题则加载对应主题配置文件(./styles/qt_material/themes/*.xml),再刷新CSS样式,即用户每次手动切换主题,重复②、③步骤。

⑤**按现有框架设计,还可扩展实现风格(style)切换功能。**目前只有一种(即./styles/qt_material),后可扩展实现切换风格(style)功能,每次切换style,则重新加载风格主配置文件、读取该风格默认主题配置文件、再应用CSS样式。即用户每次手动切换风格,重复①、②、③步骤。

接着通过代码验证下上述逻辑:

可直接在主窗口构造函数中看到上述逻辑的接口调用:

CMainWindow::CMainWindow(QWidget *parent): QMainWindow(parent),d(new MainWindowPrivate(this))
{d->ui.setupUi(this);QString AppDir = qApp->applicationDirPath();    //获取程序运行目录QString StylesDir = STRINGIFY(STYLES_DIR);      //获取风格目录,STYLES_DIR在full_feature.pro中定义:DEFINES += "STYLES_DIR=$$PWD/../../styles"d->AdvancedStyleSheet = new acss::QtAdvancedStylesheet(this);      //封装的风格主题样式类d->AdvancedStyleSheet->setStylesDirPath(StylesDir);                //设置风格目录d->AdvancedStyleSheet->setOutputDirPath(AppDir + "/output");        //设置程序风格主题样式类资源的输出目录d->AdvancedStyleSheet->setCurrentStyle("qt_material");              //设置当前风格d->AdvancedStyleSheet->setDefaultTheme();                           //设置当前风格的默认主题d->AdvancedStyleSheet->updateStylesheet();                          //确定风格主题后更新整体样式setWindowIcon(d->AdvancedStyleSheet->styleIcon());                  //设置风格配置中的默认程序图标qApp->setStyleSheet(d->AdvancedStyleSheet->styleSheet());           //应用CSSconnect(d->AdvancedStyleSheet, SIGNAL(stylesheetChanged()), this,   //切换风格信号和槽连接SLOT(onStyleManagerStylesheetChanged()));d->createThemeColorDockWidget();d->fillThemeMenu();d->setSomeIcons();d->setupQuickWidget();d->loadThemeAwareToolbarActionIcons();
}

10

这里还想再提一下的是,CSS中的勾选框、复选框之类的控件样式,有些是通过设置svg图标实现的,在切换主题是可以发现图标颜色也发生了变化:
11
切换后:
12

说明图标有发生变化,通过切换前后对比,可以发现确实图标确实有发生变化:
13

切换后:
14

代码中是通过封装的CSVGIconEngine(继承自QIconEngine)实现的:

// SVG颜色替换核心逻辑
void QtAdvancedStylesheet::replaceSvgColors(QByteArray& SvgContent, const tColorReplaceList& ColorReplaceList) {const auto& ReplaceList = ColorReplaceList.isEmpty() ? d->iconColorReplaceList() : ColorReplaceList;for (const auto& Replace : ReplaceList) {d->replaceColor(SvgContent, Replace.first, Replace.second); // 直接替换二进制数据}
}// 动态更新所有图标颜色
void CSVGIconEngine::updateAllIcons() {for (auto Engine : *IconEngineInstances) {Engine->update(); // 重新调用replaceSvgColors}
}

通过自定义图标引擎(CSVGIconEngine)和颜色替换逻辑(replaceSvgColors),结合风格主配置文件(./styles/qt_material/material.json)中的"icon_colors"配置的颜色映射,实现了SVG图标的动态颜色切换。

当主题变化时,所有图标会自动更新,无需重新加载文件。

总结

通过对Qt-Advanced-Stylesheets源码阅读及本地调试,剖析了Qt-Advanced-Stylesheets项目一键动态切换主题功能的核心实现,即通过不同的 风格 -> 主题 -> 样式 配置架构管控软件整体风格样式。

需要注意的是控件相关样式设置需在CSS文件中配置,若在代码或ui文件中设置会无法动态切换,同时需要注意css文件中的颜色值需要通过颜色模板变量而不是具体数值设置。

而对于混框架(如Qt + MFC)大型项目的一键切换风格主题样式,能否借鉴该实现方式,有待商榷。

http://www.dtcms.com/wzjs/834528.html

相关文章:

  • 怎样建设网站?(怎样注册域名?如何选择主机?网站应有哪些功能模块免费html网页源代码
  • 济南自助建站新闻头条最新消息30字
  • 免费模板网站做网站后有人抢注品牌关键字
  • 东兴网站建设南阳企业网站制作
  • 网站做两个月百度没有录取建网站需要几程序员
  • 深圳市建设局网站张局物联网官网入口
  • 漳州微信网站开发百度一下官方网站
  • 网站关键词做排名不分核酸检测收费
  • 中国建设银行网站缴费系统wordpress 做票务系统
  • 网站 做购物车企业年度报告公示系统
  • 外贸门户网站建设龙里县建设局管方网站
  • 有源码如何做网站商务网站建设策略
  • 山西做网站价格网站备案是什么一回事
  • 财政网站 建设方案做媛网站
  • 手机网站免费建设平台wordpress打不开
  • 网站建设设计团队金蝶进销存管理系统
  • 如何做配音网站江门网站推广哪家好
  • 怎样创建网站直播接口莱芜金点子信息港最新招聘人才
  • 网站建设丿金手指下拉如何做推广引流赚钱
  • aje网站润色九亭镇村镇建设办官方网站
  • 苏州网站建设设计公司哪家好重庆网站推广软件
  • 深圳龙华大浪做网站公司做企业官网哪家公司好
  • xml网站地图在线生成工具手机界面app界面设计分析
  • 论述网站建设整个流程做二手钢结构网站有哪些
  • 在线一键建站系统营销型网站制作哪家好
  • 网页美工培训班咸阳seo优化
  • 石家庄网站平台网站建设设计规划
  • 莘县网站制作服装网站建设项目维护与评价书
  • 网站建设难度大吗备案网站 备注内容
  • 长春建站模板搭建ui设计经典案例