Полезности QML
Запись от Wyn размещена 29.04.2016 в 15:21
Показов 3413
Комментарии 0
Метки c++, javascript, qt qml
|
Общий QML Оглавление
Полезности
Общие Двунаправленное соединение
Используя связки рано или поздно возникает потребность в двунаправленном соединении для актуальности свойств(property) при их редактировании где-нибудь. К сожалению в QML нет по умолчанию двунаправленного соединения. Можно его организовать несколькими способами, но практически все они при некоторых условиях дают сбой. Единственное найденное мной рабочее решение заключается в использовании Binding и прямых js-присваиваний. Это может не быть особенно быстрым из-за постоянного вызова js-контекста, но _оно_работает_. Приведу простой пример двунаправленного соединения из двух элементов и свойства:
Скрытые свойства в подключаемом элементе
Любые свойства, расположенные в подэлементах, не видны при подключении элемента. Зная это можно воспользоваться QML-примитивом QtObject, чтобы хранить там скрытые свойства.
Неизменяемое снаружи свойство в подключаемом элементе, которое можно изменять внутри
По документации свойство может или быть readonly или не быть. Но что делать, если для подключаемого элемента нужно сделать свойство, состояние которого должно быть видно снаружи, но которое должно меняться только внутри элемента? В данный момент есть один обходной путь, который не факт что будет работать завтра. Путь заключается в том, чтобы использовать readonly alias на обычное скрытое свойство
Реализация класса асинхронной загрузки изображений
Работа с компонентами
StackView(controls1, частично устарело)
StackView это один из основных компонентов для мобильной разработки Именно на нём базируется смена окон в мобильном приложении. В общем и целом с ним довольно просто работать. Рекомендации: - StackView и элементы, которые в него загружаются, лучше располагать прямо в main.qml, там же держать и всю логику работы с ним. - Элементы во время анимации смены экрана лучше выключать. - Чтобы не делать в каждом элементе одинаковые строки возвращения, лучше создать класс-контейнер, содержащий строку возвращения и оборачивать элементы в него. - Существует некоторая проблема с возвращением фокусировки на stackView после вызова диалога. Проблема решается или созданием самоудаляющегося диалога, или прописыванием в обработчика onVisibleChanged у диалога принудительной фокусировки на stackView. Учитывая, что диалог может вызываться где угодно, а со stackView обычно работают в main.qml, то я рекомендую использовать самоудаляющиеся диалоги. Пример
main.qml
| ||||||||||||||||||||||||||||||||||||||||
Метки c++, javascript, qt qml
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


