前言
在C++中,单例模式对于我们来说,并不陌生,C++中的单例模式的特性如下:
QML作为后起之秀,我们不妨猜测一下,它既然是由 Qt Widgets
封装而来的界面开发框架,那么它的身上,应该有很多 Qt Widgets
相同的特性。
目录
测试说明
测试项目结构:
project
-- [dir]Resources
-- [dir]Style
-- qmldir
-- PushButtonTemplateStyle.qml
-- main.qml
-- main.cpp
-- project.qrc
-- project.pro
-- project.pro.user
QML 单例模式的理解
单例模式就是在软件声明周期内只有一个实例对象,在单例模式的对象中,我们常常实现一些公共数据存放、公共接口,这样能简化我们项目中的代码重复性
能提高代码阅读性的前提下,还能大幅度的偷懒喝喝茶,emm~~~,会偷懒的程序员才是正经的程序员,宾果
单例模式的特性就是以空间换时间,在现代的电脑,或许真的不缺那么一点空间了,很多时候都比较注重用户的体验度。最赞的一点就是单例模式内有效的避
免线程安全的问题,当然,在 QML
中没啥卵用。。。
QML 单例模式的使用环境 --建议
QML
单例模式很适合做全局的配置文件,如组件样式管理、常用方法的管理与封装QML 单例模式的实现
/* -- PushButtonTemplateStyle.qml
* QML 单例模式关键字 > pragma Singleton , singleton
* pragma Singleton > 在单例模式实现 .qml 文件第一行的位置上标注
* singleton > 在与单例模式实现 .qml 文件同级目录下的 qmldir 文件里添加此标注
* 单例模式可以是一个可视化的组件、也可以是一个不可视的组件,不要限制自己的想象力
pragma Singleton
import QtQuick 2.0
Item {
readonly property string windowTitle: "Heelo World"
readonly property Rectangle hoverStyle: Rectangle {
color: "red"
}
readonly property Rectangle prssedStyle: Rectangle {
color: "black"
}
}
*/
qmldir
/** -- qmldir
* singleton [某块名] [主版本.次版本] [.qml 目录地址]
singleton PushButtonTemplateStyle 1.0 PushButtonTemplateStyle.qml
*/
/** --xxxx.qml
// 导入单例模式封装对象
import QtQuick 2.0
import "qrc:/style/"
Rectangle {
id: myRect
color: PushButtonTemplateStyle.templateColor
}
*/
/** --main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
import "qrc:/style/"
Window {
id: rootWindow
visible: true
width: 640
height: 480
title: PushButtonTemplateStyle.windowTitle
MyRect {
anchors.fill: parent
}
}
*/
运行效果
QML 单例模式的避坑
作者:
怪小子
Github:
https://github.com/MrSunHua
邮箱:sh4a01@163.com
本文版权归作者和博客园共有,欢迎转载,如文章有版权冲突或者有更好的见解及建议,还望联系博主讨论并修改。