• 5791阅读
  • 7回复

[讨论]qml怎么定义全局变量 [复制链接]

上一主题 下一主题
离线自强不吸
 

只看楼主 倒序阅读 楼主  发表于: 2017-06-19
qml怎么定义全局变量,或者说有什么其他方法可以在两个qml文件之间提供全局变量调用的
自强不吸!
离线spark253649

只看该作者 1楼 发表于: 2017-06-19
用c++创建一个对象设为上下文属性,这样对象在qml之前创建了,两个文件都可以调对象的成员了
业精于勤荒于嬉!
离线never_forget

只看该作者 2楼 发表于: 2017-06-20
主窗口里面的全局属性可以被全局访问的!
离线XChinux

只看该作者 3楼 发表于: 2017-06-20
回 spark253649 的帖子
spark253649:用c++创建一个对象设为上下文属性,这样对象在qml之前创建了,两个文件都可以调对象的成员了
 (2017-06-19 18:25) 

顶这个,比较灵活方便。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线mmlgq

只看该作者 4楼 发表于: 2017-06-22
还有一种方法就是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]);    
}
}



离线自强不吸

只看该作者 5楼 发表于: 2017-06-22
回 spark253649 的帖子
spark253649:用c++创建一个对象设为上下文属性,这样对象在qml之前创建了,两个文件都可以调对象的成员了
 (2017-06-19 18:25) 

好的,谢谢,我就是这么干的,写成单例
自强不吸!
离线自强不吸

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

编译的错误是什么呢,贴出来看一下
自强不吸!
离线cuisy

只看该作者 7楼 发表于: 2017-07-01
将一个qml文件变为另一个qml文件的子控件,子控件就可以调用父控件的所有变量属性了
快速回复
限100 字节
 
上一个 下一个