qml工程化应用之一键换肤

author author     2023-05-04     255

关键词:

参考技术A 所谓换肤,就是改变页面中颜色值,使页面呈现出不同的色彩效果。

首先,将UCD提供的所有颜色值收集到一起,语义化定义到文件中,如下面的UIConfig.qml

其中,默认颜色定义在ctrlColor中,天蓝色主题定义在ctrlColorBlue中,海蓝色主题定义在ctrlColorSeaBlue中,这三个变量的内部结构都是一模一样的,颜色的定义最好语义化的定义在ctrlColor中,便于维护。不同主题除了颜色值不同以外,有时图标也会不一样,所以还收集了图标,分类定义在ctrlIcon中。ctrlColorDefault和ctrlIconDefault用来切换不同主题,初始化时将其赋值为默认主题颜色和图标。当主导航栏上换肤按钮触发主题currentTheme切换时,则ctrlColorDefault和ctrlIconDefault根据主题重新赋值。

接下来,介绍如何使用这些颜色值。在主页面声明:

在需要用到颜色值或图标的控件中直接引用即可,如:

property color normalTextColor: gUIConfig.ctrlColor.commonBtn.font.nor;

Rectangle

          id: rec;

          height: 30;

          width: 260;

          border.width: 1;

          border.color: gUIConfig.ctrlColor.conditionRec.border.nor;



这样就完成了一键换肤的功能。

setcontentview流程及应用换肤

SetContentView流程及应用换肤SetContentView流程LayoutInflater.inflate流程LayoutInflaterCompat.setFactory方法及换肤动态换肤方案SetContentView流程LayoutInflater.inflate流程LayoutInflaterCompat.setFactory方法及换肤在上边分析setContentView的流 查看详情

使用 Maven 构建配置文件为 Android 应用程序换肤

】使用Maven构建配置文件为Android应用程序换肤【英文标题】:SkinningAndroidappwithMavenbuildprofiles【发布时间】:2012-03-3018:23:01【问题描述】:我有mavenizedAndroid应用程序,客户希望在构建时支持换肤。例如:mvncleaninstall-P开发者,mvncl... 查看详情

setcontentview流程及应用换肤

SetContentView流程及应用换肤SetContentView流程LayoutInflater.inflate流程LayoutInflaterCompat.setFactory方法及换肤动态换肤方案SetContentView流程LayoutInflater.inflate流程LayoutInflaterCompat.setFactory方法及换肤在上边分析setContentView的流程中,我们发... 查看详情

如何使用十字键换屏?

】如何使用十字键换屏?【英文标题】:Howtochangescreenbyusingcrossbutton?【发布时间】:2022-01-1618:09:12【问题描述】:我想关闭指纹屏幕,就好像用户在手机中没有指纹一样,这样他们就可以使用用户名和密码屏幕登录。您可以通过... 查看详情

QML 应用风格

】QML应用风格【英文标题】:QMLapplicationstyle【发布时间】:2016-02-1014:26:48【问题描述】:我正在使用QML为平板电脑编写应用程序。应用程序的主QML文件是这样的:ApplicationWindowid:mainWindowvisible:truetitle:"MyApp"menuBar:MenuBarMenutitle:qsTr("... 查看详情

为(iphone)应用程序换肤的良好设计模式是啥?

】为(iphone)应用程序换肤的良好设计模式是啥?【英文标题】:Whatisagooddesignpatternforskinningan(iphone)app?为(iphone)应用程序换肤的良好设计模式是什么?【发布时间】:2011-06-2413:53:09【问题描述】:在XIB中构建我所有漂亮的按... 查看详情

在 WPF 中的应用程序中创建可换肤图像的最佳方法

】在WPF中的应用程序中创建可换肤图像的最佳方法【英文标题】:BestwaytocreateaskinnableimagesinapplicationinWPF【发布时间】:2014-03-0507:50:29【问题描述】:我有一个大的WPF应用程序,我必须让它可换肤。我的问题是我有很多用烟花创... 查看详情

Qml 应用程序编译 *Form.ui.qml 文件但忽略关联的 .qml 文件

】Qml应用程序编译*Form.ui.qml文件但忽略关联的.qml文件【英文标题】:Qmlapplicationcompilinga*Form.ui.qmlfilebutignoringassociated.qmlfile【发布时间】:2016-12-1817:05:56【问题描述】:我已经构建了一个与c++类接口的qml应用程序,并且我在QtDesign... 查看详情

android一键换肤原理简述(代码片段)

简介Android对应用进行换肤操作,首先要生成一个对应的皮肤包,在要换肤的应用中收集需要换肤的控件,获取皮肤包里的资源,一键换肤时遍历View树,对要换肤的控件进行换肤。下面总结为4个步骤步骤1通过A... 查看详情

三步实现android应用内一键换肤,无需重启应用,无需编写多余代码(代码片段)

古人学问无遗力,少壮工夫老始成。纸上得来终觉浅,绝知此事要躬行。--《冬夜读书示子聿》·陆游换肤效果演示四种皮肤切换:默认白色、蓝色、绿色和玫瑰红:前言先给大家介绍一下现在比较主流的、Star比... 查看详情

QML 应用程序和安全性 - 有吗?

】QML应用程序和安全性-有吗?【英文标题】:QMLapplicationsandsecurity-isthereany?【发布时间】:2016-01-3000:50:56【问题描述】:我刚刚做了一个令人震惊的发现——在部署QML应用程序时,项目中使用的所有“库存”QML组件都部署为裸QML... 查看详情

QML 应用程序崩溃;如何调试?

】QML应用程序崩溃;如何调试?【英文标题】:QMLapplicationcrashes;HowtoDebug?【发布时间】:2014-12-0210:40:53【问题描述】:我的QML应用程序发生了崩溃。有什么方法可以调试它以找到它的启动位置?【问题讨论】:我怀疑实际的QML代... 查看详情

qml使用chartview崩溃问题

...用QML显示Chart的时候,使用了ChartView,新建了默认的QtQuick工程,粘贴Qt文档中ChartView的例子,粘贴后编译通过了,然后,程序崩溃!  经过一番百度之后。发现,在使用ChartView的时候,pro工程文件中需要加入QT+=charts。然后main... 查看详情

QML 应用程序块

】QML应用程序块【英文标题】:QMLApplicationblocks【发布时间】:2020-04-2720:13:48【问题描述】:以下小型QML应用程序在运行时会永远阻塞(Qt5.14.2、Windows10)。我的想法是创建一个包含业务逻辑的通用App,并在其上添加一个QtUI。当... 查看详情

应用镜像变换来翻转/反射 QML 控件

】应用镜像变换来翻转/反射QML控件【英文标题】:Applyingamirrortransformationtoflip/reflectaQMLControl【发布时间】:2021-09-1923:07:08【问题描述】:我可以在QML中水平翻转/反射形状项目吗?例如;我有以下形状:我可以水平翻转/反射它来... 查看详情

如何为 Windows XP 部署 Qt/QML 应用程序

】如何为WindowsXP部署Qt/QML应用程序【英文标题】:HowtodeployQt/QMLapplicationforWindowsXP【发布时间】:2016-01-0615:13:12【问题描述】:我的QML应用程序使用了一些粒子效果,我通过QQuickWidget调用了QML对象,我尝试通过windeployqt为Windows部... 查看详情

将 Qt 应用程序与 QML 静态链接

】将Qt应用程序与QML静态链接【英文标题】:StaticallylinkQtapplicationwithQML【发布时间】:2015-05-1016:06:16【问题描述】:我正在尝试静态链接使用QML模块的Qt应用程序。以前,当它不包含QML时,我能够静态构建和链接它。在编译输出... 查看详情

Qt Maps (QML) 应用程序窗口为空白

】QtMaps(QML)应用程序窗口为空白【英文标题】:QtMaps(QML)applicationwindowisblank【发布时间】:2015-06-0219:32:43【问题描述】:这是我正在尝试制作的QtMaps应用程序的代码。http://pastebin.com/PNcYivM9-main.qml我在Ubuntu14.04上使用QtCreator。当我... 查看详情