查看完整版本: [-- qml怎么定义全局变量 --]

QTCN开发网 -> Qt QML开发 -> qml怎么定义全局变量 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

自强不吸 2017-06-19 14:36

qml怎么定义全局变量

qml怎么定义全局变量,或者说有什么其他方法可以在两个qml文件之间提供全局变量调用的

spark253649 2017-06-19 18:25
用c++创建一个对象设为上下文属性,这样对象在qml之前创建了,两个文件都可以调对象的成员了

never_forget 2017-06-20 08:20
主窗口里面的全局属性可以被全局访问的!

XChinux 2017-06-20 08:59
spark253649:用c++创建一个对象设为上下文属性,这样对象在qml之前创建了,两个文件都可以调对象的成员了
 (2017-06-19 18:25) 

顶这个,比较灵活方便。

mmlgq 2017-06-22 09:50
还有一种方法就是qml单例,不过似乎添加可以,修改单例变量会莫名奇妙编译错误,然后又莫名奇妙好了...还没理解,有大神知道解释下。
代码:
注册单例到元对象:
qmlRegisterSingletonType(QUrl("qrc:/GlobalProperty.qml"), "tool.addInfo.Global", 1, 0, "GlobalVar");

单例qml文件代码
pragma Singletonimport QtQuick 2.7
QtObject {    
property int   pageFlag: -1;  
property bool  contentChanged: false;  
property color mainColor:"#37906f";  
property var   qmlPageArr: ["xx.qml","xx2.qml"];
}
使用:先导入import tool.addInfo.Global 1.0
Rectangle {    
property int  iPageFlag: GlobalVar.pageFlag;    
Loader{        id:rightPageLoader;        anchors.fill: parent;    }    
onIPageFlagChanged:
{      
rightPageLoader.setSource(GlobalVar.qmlPageArr[iPageFlag]);    
}
}




自强不吸 2017-06-22 11:27
spark253649:用c++创建一个对象设为上下文属性,这样对象在qml之前创建了,两个文件都可以调对象的成员了
 (2017-06-19 18:25) 

好的,谢谢,我就是这么干的,写成单例

自强不吸 2017-06-22 11:28
mmlgq:还有一种方法就是qml单例,不过似乎添加可以,修改单例变量会莫名奇妙编译错误,然后又莫名奇妙好了...还没理解,有大神知道解释下。
代码:
注册单例到元对象:
qmlRegisterSingletonType(QUrl("qrc:/GlobalProperty.qml"), "tool.addInfo.Global", 1, 0, &q .. (2017-06-22 09:50) 

编译的错误是什么呢,贴出来看一下

cuisy 2017-07-01 07:57
将一个qml文件变为另一个qml文件的子控件,子控件就可以调用父控件的所有变量属性了


查看完整版本: [-- qml怎么定义全局变量 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled