2016-11-08 3 views
1

Для многих приложений, особенно на низкопроизводительных машинах, полезно иметь встроенные компоненты, такие как Loader и Image, для асинхронной загрузки их ресурсов. Для этого есть два очевидных варианта:Изменение значений по умолчанию для свойств (например, асинхронных)

  1. Установите требуемое свойство встроенного компонента, т.е. asynchronous: true
  2. Создание пользовательского компонента AsyncXXX основном с этим содержанием:

AsyncXXX. QML:

XXX { 
    asynchronous: true 
} 

где XXX либо Loader или Image.

Интересно, почему они не настроены на асинхронный режим по умолчанию.

Самое главное, есть способ - переменная окружения, глобальная настройка - изменить поведение по умолчанию встроенных компонентов на асинхронный, что позволит избежать использования пользовательских компонентов?

ответ

3

Вы можете легко сделать ASLoader и ASImage типы QML, которые только Loader и Image с asynchronous: true и использовать их на протяжении всего проекта. Это избавит вас от необходимости изменять его везде, и если вы хотите переопределить это, вы просто перейдете и измените его в прототипе.

Интересно, почему они не настроены на асинхронный режим по умолчанию.

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

EDIT:

Можно также добиться переключения между синхронным и асинхронным поведением во время выполнения, если вы связать прототип свойства проекта в масштабах, например, свойство контекста, или свойство в main.qml.

 Смежные вопросы

  • Нет связанных вопросов^_^