QML: public 变量

QML: public variable

我有两个 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
...
            }
        }
    }
}

QML public 变量?在 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
    // ....
}

当然,"message board" C++ 对象暴露给 QML 类似:

Q_PROPERTY(qreal scale READ scale CONSTANT);

我通过在 Second.qml 文件中添加后退按钮解决了我的问题。在这个按钮中,我放置了语句 selectedParts = 1。