Резюме к главе об архитектуре модель-представление-делегат

Добавлено 12 апреля 2022 в 13:14

В этой главе мы рассмотрели модели, представления и делегаты. Для каждой записи данных в модели представление создает экземпляр делегата, визуализирующего эти данные. Это отделяет данные от представления.

Модель может быть одним целым числом, где переменная index предоставляется делегату. Если в качестве модели используется массив JavaScript, переменная modelData представляет данные текущего индекса массива, а index содержит индекс. Для более сложных случаев, когда каждый элемент данных должен предоставлять несколько значений, лучшим решением является ListModel, заполненная элементами ListElement.

Для статических моделей в качестве представления можно использовать повторитель, Repeater. Его легко комбинировать с позиционером, таким как Row, Column, Grid или Flow, для создания частей пользовательского интерфейса. Для динамических или больших моделей данных больше подходит такия представления, как ListView, GridView или TableView. Они создают экземпляры делегатов «на лету» по мере необходимости, уменьшая количество элементов, находящихся в сцене одновременно.

Разница между GridView и TableView заключается в том, что табличное представление предполагает модель табличного типа с несколькими столбцами данных, а представление сетки показывает модель типа списка в сетке.

Делегаты, используемые в представлениях, могут быть статическими элементами со свойствами, привязанными к данным из модели, или они могут быть динамическими, состояния которых зависят от того, находятся ли они в фокусе или нет. Используя сигналы представления onAdd и onRemove, их можно даже анимировать при появлении и исчезновении.

Оригинал статьи:

Теги

GridViewGUI / Графический интерфейс пользователяListViewMVD / model-view-delegate / модель-представление-делегатPathViewQMLQtQtQuickQtQuick ControlsПаттерны проектирования / Design PatternsПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.