从QML代码更改上下文属性

时间:2014-10-31 08:43:58

标签: qt qml qt-quick

主要目标:拥有一个上下文属性,该属性由定义到QML文件(例如file_1.qml)中的项目设置,并且将在运行时由不同QML文件中定义的其他项目访问(例如{{ 1}})。

问题:是否可以在file_2.qml中设置新的上下文属性,然后在file_1.qml中阅读此属性?

(编辑)

例如,我需要在file_1.qml中使用file_2.qml中的值:

file_1.qml:

file_2.qml

file_2.qml:

(...)
UiController.but_generate__onClicked(
   getContextProperty("sbx_money_quantity_value"),
   cal_daysoff.visibleMonth)
(...)

谢谢!

1 个答案:

答案 0 :(得分:1)

由于范围限制,您无法从另一个文件中访问某个文件中的项目。所以你只需要一些代理根对象,或者可能是一些全局单例对象,或者只是将一个对象的引用传递给另一个对象。例如:

<强> File1.qml

Item {   
    property someValue: 1
}

<强> File2.qml

Item {
    property variant ref: null
    onChanged: ref.someValue = 2;
}

<强> main.qml

File1 {
    item: file1
}
File2 {
    item: file2
    ref: file1
}