Изменить свойства контекста из кода QML
Основная цель: иметь свойство контекста, которое устанавливается элементом, определенным в файле QML (скажем, file_1.qml
), и который будет доступен во время выполнения другим элементом, определенным в другом файле QML (скажем, file_2.qml
).
Вопрос: возможно ли установить новое свойство контекста в file_1.qml
а затем прочитать это свойство в file_2.qml
?
(редактировать)
Например, мне нужно использовать значение из file_2.qml в file_1.qml:
file_1.qml:
(...)
UiController.but_generate__onClicked(
getContextProperty("sbx_money_quantity_value"),
cal_daysoff.visibleMonth)
(...)
file_2.qml:
(...)
SpinBox {
id: sbx_money_quantity
objectName: "sbx_money_quantity"
Layout.fillWidth: true
minimumValue: 0
maximumValue: 100000
value: 20000
onChanged: setContextProperty("sbx_money_quantity_value",value)
}
(...)
Спасибо!
1 ответ
Вы не можете получить доступ к элементу в одном файле из другого из-за ограничения области. Таким образом, вам просто нужен некоторый корневой прокси-объект, или это может быть какой-то глобальный одноэлементный объект, или просто передать ссылку на один объект другому. Например:
File1.qml
Item {
property someValue: 1
}
File2.qml
Item {
property variant ref: null
onChanged: ref.someValue = 2;
}
main.qml
File1 {
item: file1
}
File2 {
item: file2
ref: file1
}