Spec-Zone.ru › Qt 6.1

Тип QML Loader3D

Позволяет динамически загружать 3D поддерево из URL-адреса или компонента. Подробнее...

Заявление импорта: import QtQuick3D .
Наследует:

Node

  • Список всех членов, включая унаследованные

Свойства

  • active : bool
  • asynchronous : bool
  • item : object
  • progress : real
  • source : url
  • sourceComponent : Component
  • status : перечисление

Сигналы

  • loaded()

Методы

  • object setSource(url source, object properties)

Подробное описание

Loader3D используется для динамической загрузки QML-компонентов для Qt Quick 3D.

Loader3D может загружать QML-файл (используя свойство source) или объект Component (используя свойство sourceComponent). Это полезно для отсрочки создания компонента до момента его необходимости: например, когда компонент должен создаваться по требованию или когда компонент не должен создаваться впустую по соображениям производительности.

Примечание: Loader3D работает так же, как Loader. Разница между ними заключается в том, что Loader предоставляет способ динамической загрузки объектов, наследующих Item, а Loader3D предоставляет способ загрузки объектов, наследующих Object3D и являющихся частью 3D сцены.

Документация по свойствам

active : bool

Это свойство равно true если Loader3D в данный момент активен. Значение по умолчанию для этого свойства - true.

Если Loader3D неактивен, изменение свойств source или sourceComponent не приведет к созданию элемента до тех пор, пока Loader3D не станет активным.

Установка значения в неактивное состояние приведет к освобождению любого загруженного объектом item, но не повлияет на source или sourceComponent.

Состояние неактивного загрузчика всегда равно Null.

См. также source и sourceComponent.

asynchronous : bool

Это свойство указывает, будет ли компонент создаваться асинхронно. По умолчанию оно равно false.

При использовании со свойством source загрузка и компиляция также будут выполняться в фоновом потоке.

Асинхронная загрузка создает объекты, объявленные компонентом, на протяжении нескольких кадров, и уменьшает вероятность появления артефактов в анимации. При асинхронной загрузке состояние будет изменяться на Loader3D.Loading. После создания всего компонента объект item будет доступен, а состояние изменится на Loader.Ready.

Изменение значения этого свойства на false во время асинхронной загрузки заставит ее немедленно завершиться синхронно. Это позволяет начать асинхронную загрузку и затем заставить ее завершиться, если к содержимому Loader3D необходимо получить доступ до завершения асинхронной загрузки.

Чтобы избежать постепенной загрузки элементов, установите visible соответствующим образом, например:

Loader3D {
    source: "mycomponent.qml"
    asynchronous: true
    visible: status == Loader3D.Ready
}

Обратите внимание, что это свойство влияет только на создание объектов; оно не связано с асинхронной загрузкой компонента через сеть.

[только для чтения] item : object

Это свойство содержит верхний уровень объекта, который в данный момент загружен.

[только для чтения] progress : real

Это свойство содержит прогресс загрузки QML-данных из сети, от 0,0 (ничего не загружено) до 1,0 (завершено). Большинство QML-файлов довольно маленькие, поэтому это значение будет быстро меняться от 0 до 1.

См. также status.

source : url

Это свойство содержит URL-адрес QML-компонента для создания экземпляра.

Для разгрузки текущего загруженного объекта установите это свойство в пустую строку или установите sourceComponent в undefined. Установка source в новый URL также приведет к разгрузке элемента, созданного предыдущим URL.

См. также sourceComponent, status и progress.

sourceComponent : Component

Это свойство содержит Component для создания экземпляра.

Item {
    Component {
        id: redCube
        Model {
            source: "#Cube"
            materials: DefaultMaterial {
                diffuseColor: "red"
            }
        }
    }

    Loader3D { sourceComponent: redCube }
    Loader3D { sourceComponent: redCube; x: 10 }
}

Для разгрузки текущего загруженного объекта установите это свойство в undefined.

См. также source и progress.

[только для чтения] status : enumeration

Это свойство содержит состояние загрузки QML. Оно может быть одним из следующих:

Константа Описание
Loader3D.Null Загрузчик неактивен или не задан источник QML.
Loader3D.Ready Источник QML загружен.
Loader3D.Loading Источник QML в данный момент загружается.
Loader3D.Error При загрузке источника QML произошла ошибка.

Используйте это состояние для обновления или реагирования на изменение состояния каким-либо образом. Например, вы можете:

  • Вызвать изменение состояния:
    State { name: 'loaded'; when: loader.status == Loader3D.Ready }
  • Реализовать обработчик сигнала onStatusChanged:
    Loader3D {
        id: loader
        onStatusChanged: if (loader.status == Loader3D.Ready) console.log('Loaded')
    }
  • Привязаться к значению состояния:
    Text { text: loader.status == Loader3D.Ready ? 'Loaded' : 'Not loaded' }

Обратите внимание, что если источник — это локальный файл, состояние изначально будет Ready (или Error). Хотя в этом случае сигнала onStatusChanged не будет, onLoaded все равно будет вызван.

См. также progress.

Документация по сигналам

loaded()

Этот сигнал отправляется, когда состояние status становится Loader3D.Ready, или при успешной начальной загрузке.

Соответствующий обработчик — onLoaded.

Примечание: Соответствующий обработчик — onLoaded.

Документация по методам

object setSource(url source, object properties)

Создаёт экземпляр объекта данного компонента source, который будет иметь заданные properties. Аргумент properties необязателен. Экземпляр будет доступен через свойство item после завершения загрузки и создания экземпляра.

Если свойство active равно false в момент вызова этой функции, заданный компонент source не будет загружен, но source и начальные properties будут кэшированы. Когда загрузчик станет активным, будет создан экземпляр компонента source с заданными начальными properties.

Установка начальных значений свойств экземпляра компонента таким способом не вызовет какие-либо связанные с ним Behavior.

Обратите внимание, что кэшированные properties будут очищены, если свойство source или sourceComponent будут изменены после вызова этой функции, но до установки для загрузчика свойства active.

См. также source и active.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qml-qtquick3d-loader3d.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API