QML:公共变量

时间:2015-06-20 13:43:58

标签: qt qml

我有两个QML文件。 在 First.qml 中,我可以看到Second.qml。在Second.qml中,我有 selectedParts 变量。 当我将 Second.qml 显示时,我想始终将 selectedParts 设置为值 1 。这仅在我加载时有效 第一次 Second.qml 。如果我使 Second.qml 不可见然后可见,则 selectedParts 值为 2 。无论如何还有 将 selectedParts 变量设为public并在我点击myImage时始终设置其值?

First.qml

Item {
    Image {
        id: myImage
        MouseArea{
                    anchors.fill: parent
                    onClicked: {
                    second.visible = true
...
            }
        }
    }
}

Second.qml

Item {
    property int selectedParts: 1
    Image {
        id: myImage2
        MouseArea{
                    anchors.fill: parent
                    onClicked: {
                    selectedParts = 2
...
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

QML公共变量?在Defining QML types from C++中查找MessageBoard。我们正在使用这种方法。您所需要的只是创建C ++ MessageBoard对象,在其中放置一些数据并通过给予每个QML根对象的QML上下文引用它:

m_quickView.engine()->rootContext()->setContextProperty("myMsgBoard", MyQmlMsgBoard::instance());

在QML中:

Rectangle {
    id: topRect
    scale: myMsgBoard.scale // or anywhere in QML
    // ....
}

当然"留言板" C ++对象暴露给QML,如:

Q_PROPERTY(qreal scale READ scale CONSTANT);

答案 1 :(得分:0)

我通过在Second.qml文件中添加后退按钮解决了我的问题。在这个按钮中我把声明selectedParts = 1。