Изменить свойства контекста из кода 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
}
Другие вопросы по тегам