使用JavaScript为QML创建全局变量

时间:2013-06-20 12:31:59

标签: javascript qt qml stateless stateful

我遇到了QML / JS集成的问题。

我有一个存储在.js文件中的javascript列表变量。我想从一个QML文件写入此变量,并从另一个QML文件中读取它。我似乎无法找到解决方案。我过度简化了我的实际代码,使其易于理解!

// writeValue.QML
import "../javascript/storedValue.js" as StoredValue
...
MouseArea{
    onClicked{
        StoredValue.value.push(1)
    }
}

// readValue.QML
import "../javascript/storedValue.js" as StoredValue
...
Text{
    text : StoredValue.value
}

//storedValue.js
var value = []

我尝试使用'.pragma library'而不使用它,但无济于事。

writeValue.QML成功写入会发生什么,因此[1,1,1,...]。而readValue.QML只找到一个空列表,[]。

1 个答案:

答案 0 :(得分:6)

只需将.pragma library放在JS文件的开头即可。这样,QML组件只会导入一个实例

但请记住,var属性更改时不会发出更新信号。如果您希望全局var具有更新支持,则应在C ++端通过QObject导出自定义setContextProperty()