#qt #qml
#qt #qml
Вопрос:
У меня есть один файл index.qml, который состоит из двух прямоугольников, которые заполняют экран в пропорциях ~ 3: 1. В обоих из них я загружаю одно и то же окно.файл qml. Что мне нужно, так это присвоить разные значения свойству ORIENT so window.qml будет вести себя немного по-другому.
Посмотрите на пример ниже. Этот ОРИНЕТ просто показывает, чего я хотел бы достичь…
index.qml
Rectangle {
id: rootA
anchors.left: parent.left
anchors.top: parent.top
width: parent.width * 0.65
// set some property or function so it will be seen in loaded window.qml
// sth like:
property ORINET: "horizontal"
Loader {
anchors.left: parent.left; anchors.top: parent.top;
anchors.right: parent.right; anchors.bottom: parent.bottom
source: "window.qml"
}
}
Rectangle {
id: rootB
anchors.right: parent.right
anchors.top: parent.top
width: parent.width * 0.35
// set some property or function so it will be seen in loaded window.qml
// sth like:
property ORINET: "vertical"
Loader {
anchors.left: parent.left; anchors.top: parent.top;
anchors.right: parent.right; anchors.bottom: parent.bottom
source: "window.qml"
}
}
окно.qml
Rectangle {
id: windowBox
state [
...
]
...
Component.onCompleted: {
windowBox.state = ORINET
}
}
Ответ №1:
В соответствии с этой документацией вы можете присвоить свойство Loader
, которое также будет доступно для загруженного элемента:
Loader {
anchors.fill: parent
property int ORINET: "vertical
source: "window.qml"
}
window.qml:
Rectangle {
states: [
...
]
state: ORINET
}
Пожалуйста, обратите внимание, что в QtCreator state: ORINET
он может выглядеть курсивным и синим, как будто его не существует, но это всего лишь редактор
Комментарии:
1. Я не адаптировался к вашему примеру, потому что я не совсем понимаю, как вы планируете использовать состояние, это механизм состояний QML или нет?
2. @pi.314 Я отредактировал свой ответ, чтобы лучше отразить вашу ситуацию. Пожалуйста, также обратите внимание, что вы можете просто сделать
anchors.fill: parent
вместо всех четырех сторон по отдельности 😉