Qt Quick开发中利用qml的单例模式(1)

         从C/C++的模式转到qml开发中,跨文件访问变量和函数是很头疼的事情。通过id访问,虽然可以实现,但是代码量大了就不太好控制了,id可以覆盖、跨文件访问就不太好统一规范起来。这时候qml的单例模式就变得很有用了,qml的单例模式,在整个应用中只会被实例化1次,没有副本,所以在一定程度上可以代替全局变量。有时候跨文件的调用、访问可以间接通过单例模块进行。

如下: 创建单例模块

<pre style="margin-top: 0px; margin-bottom: 0px;">pragma<span style=" color:#c0c0c0;"> </span>Singleton

import QtQuick 2.0
 
QtObject{
    property var viewManager: null;
    function log(argv)
    {
        console.log(argv);
    }
}
 
 

代码第一行是关键 ,表明这是一个单例。使用这个单例其中一种方法如下:


qmldir 这个文件没有后缀名。内容如下

singleton QMLSettings 1.0 QMLSettings.qml
建议使用记事本 notpad++一类软件打开


调用该模块操作如下

import QtQuick 2.6
import QtQuick.Window 2.2
import "QMLSettings"
 
Window {
    id: root
    visible: true
    title: qsTr("Hello World")
    ViewManager
    {
        id: viewManager     
        Component.onCompleted:
        {
            QMLSettings.viewManager = this;
        }
    }
}
 

代码进行了裁剪,第三行 导入了 import "QMLSettings" //即途中文件夹的名称

在实例化ViewManager的onCompleted事件中

访问全局的QMLSettings.viewManager 变量并且将自身赋值过去,这样其他文件的模块可以通过QMLSettings.viewManager访问并且调用viewManager的变量函数。

QMLSettings.viewManager = this;

本文讲述的是QML编写的单例模块,还有一种单例模块是C++实现的,下次在记录该种方式的实现方法。


多谢JCY同学的博文,边学边实现,有了本文。谢谢。


import "QMLSettings"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值