У меня есть два файла QML. В First.qml Я могу сделать видимым Second.qml. В Second.qml у меня есть selectedParts переменная. Я хочу установить selectedParts значение всегда, когда я делаю Second.qml видно. Это работает только при загрузке Second.qml для первого раза. Если я сделаю Second.qml невидимым, а затем видно, selectedParts значение . Есть ли в любом случае , чтобы сделать selectedParts переменным общедоступным и установить его значение всегда, когда я нажимаю на myImage?QML: public variable
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
...
}
}
}
}
Нет пути от 'First.qml' до increment' selectedParts' (пока нет другого - не показан код - влияет на переменную). Кроме того, 'selectedParts' доступен в качестве переменной верхнего уровня в коде, что делает его видимым для' First.qml'. Если у вас есть конкретная проблема в коде кода * этого * кода. Во всяком случае, чтобы установить переменную в '2', когда компонент виден, вы можете сделать это внутри' onVisibleChanged', т. Е. 'OnVisibleChanged: if (visible) selectedParts = 2'. Если у вас есть переменные во внутренних областях, рассмотрите [aliases] (http://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html). – BaCaRoZzo
Итак, что произойдет, если вы просто сделаете 'second.visible = true; second.selectedParts = 1; 'in' First'? – hyde
hyde variable selectedParts не доступен в First.qml –