一个桌面显示程序,主页面为Main.qml,主页面有一按钮进入次级页面设置一个长度值,set.qml文件里设置了这个长度值,怎么将这个值传到主页面的,用作其上一个部件的长度值?
main.qml
Item{
Imag{
id:b
height:(想要获取a的实时动态height:x)
}
}
set.qml
Common.Panel {
id: root
onBackClicked: {
G.back();
}
Item{
Base.text{
id:a
height:x
}
}
}
[QT Quick]同级的a,b两个qml文件,怎样在b.qml文件里调用a.qml.文件的一个值
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- shen90pp 2018-07-30 07:55关注
实现你的功能有N种方法:
1. 如果你的Main.qml 是 mian.cpp载入的主页面, 那么 在Main.qml的 根节点处(即最外层括号内) 定义变量(比如变量 mySize), 那么这个mySize 在全局都是可以取到的(用根节点的Id.mySize 取)
例如:
Main.qml:
Item{
id: _main
property real mySize: 0
}
Set.qml:
Item{
Button{
text: "clicked"
onClicked:_main.mySize += 5
}
}如果你的次页面Set.qml 是直接写在主页面上的 例如这样:
Item{
id: _main
Set{ id: _set }
}
那么 可以在Set 中的根节点处设置一个属性, 在Set中为属性复制, 在主页面上取值; 例如:
Set.qml
Item{
id: _set
property real mySize: 0
}
Main.qml:
Item{
Text{
text: _set.mySize
}
Set{ id: _set}
}如果你的Set页面是通过容器加载的 如(Loader, StackView) 那么你可以直接用方法1, 或者 调用Loader.item StackView.get(index)/StackView.find()获取到Set的实例 再取Set中属性的值
例如:
Main.qml
Item{
Loader{
id: _loader
source: "Set.qml"
}
Text{
text: _loader.status == Loader.Ready? _loader.item.mySize: 0
}
}当然还有其他的方法 比如 Settings: 可以将参数"持久化",(参考 Qt事例Qt Quick Control 2 Gallery)
或者在main.cpp中 用qmlRegisterSingletonType() 注册一个全局的对象 用法与1类似
....
当然还有其他很多方法...解决 1无用
悬赏问题
- ¥15 stata安慰剂检验作图但是真实值不出现在图上
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题