绑定到导入的Javascript属性

时间:2014-11-24 09:58:35

标签: qt qml qt5 qt5.3

如何绑定到Javascript资源?

我是QML的新手并且可能会以错误的方式思考这个问题,但在下面的例子中,我想按一下按钮说“#34; World"当我按下它时。

main.qml

import QtQuick 2.0
import QtQuick.Controls 1.0
import "model.js" as Model


Button {
    id: button
    text: Model.text

    onClicked: {
        Model.text = "World";
        print("Model.text is:", Model.text)
        print("button.text is:", button.text)
        // Model.text is "World"
        // button.text is "Hello"
        // They should both be "World"
    }
}

model.js

var text = "Hello";

我也尝试使用Qt.binding,但它并没有什么区别。

main.qml

import QtQuick 2.0
import QtQuick.Controls 1.0
import "model.js" as Model


Button {    
    onClicked: {
        Model.text = "World";
    }

    Component.onCompleted: {
        text = Qt.binding(function () { return Model.text })
    }
}

我正在寻找的最终结果是在专用的Javascript资源中拥有属性,例如窗口高度,颜色和图像路径等,并且无论使用哪个项目与任何更改保持同步资源。

修改

找到相关问题:declare global property in QML for other QML files

1 个答案:

答案 0 :(得分:4)

通常,您无法将QML属性绑定到纯JavaScript模块的变量。 我的建议是使用轻量级QML替代 - QtObject 。您可以向其添加自定义属性和信号集,例如:

QtObject {
    id: mySettings
    property string iconPath: "./icon.png"
}

此属性可以在以后完全按照您的要求绑定。