使用JavaScript为QML创建全局变量

use*_*101 4 javascript qt stateful stateless qml

我遇到了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 = []
Run Code Online (Sandbox Code Playgroud)

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

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

The*_*roo 6

刚刚放在.pragma libraryJS文件的开头.这样,QML组件只会导入一个实例.

但请记住,当var属性更改时,不会发出更新信号.如果您希望获得全局var更新支持,则应在C++端导出自定义QObjectvia setContextProperty().