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