Загрузка компонента по требованию
Loader создаёт компонент только тогда, когда он нужен. Это помогает строить интерфейс с несколькими экранами и не создавать тяжёлые элементы заранее.
Loader {
id: pageLoader
anchors.fill: parent
active: false
source: "SettingsPage.qml"
onLoaded: {
item.title = "Настройки"
}
onStatusChanged: {
if (status === Loader.Error)
console.error("Не удалось загрузить экран")
}
}
Button {
text: "Открыть настройки"
onClicked: pageLoader.active = true
}Пока загрузка не завершилась, свойство item может быть пустым. Обращайтесь к созданному объекту после состояния Loader.Ready или в обработчике onLoaded. Состояния Null, Loading, Ready и Error позволяют показать индикатор или сообщение об ошибке.
Когда использовать sourceComponent
Если компонент небольшой или объявлен рядом, задайте sourceComponent вместо пути к файлу. Для крупных экранов отдельный QML-файл удобнее сопровождать. Не создавайте несколько Loader одновременно без необходимости: каждый созданный item потребляет память и может запускать собственные таймеры и обработчики.
Loader управляет жизненным циклом созданного элемента. Учитывайте это, когда экран хранит состояние: при выгрузке элемент будет уничтожен.