Модели - АлтунинВВ.Блог - всё об IT-технологиях!
Модели

Модели (10)

Создание и использование моделей в Qt5

Модели можно создавать не только для стандартных виджетов (QComboBox, QTableView и так далее), но и для тех, которые  создаём мы сами.

Сегодня будет рассмотрена реализация модели для виджета, который был создан в предыдущих статьях - простой лампочки. Модель позволит управлять состоянием лампочки – включать/отключать её.

Конечно, вы можете сделать все это не используя модель. Данный виджет был специально выбран для демонстрации ввиду своей простоты.

Мы будем использовать проект из предыдущей статьи.

В Qt5 ячейки таблицы могут содержать не только текст, но и другие виджеты.

Сегодня мы создадим простой делегат для QTableView, чтобы отобразить в столбце иконку. Для того чтобы сэкономить время, мы будем проект из прошлой статьи.

Сегодня мы рассмотрим создание модели в Qt5 для виджета QTableView. В отличии от QListView у данного компонента есть не только строки, но и столбцы.

Так же у таблицы есть и заголовки столбцов, так что мы реализуем необходимый для их отображения метод.

Сегодня мы расширим использование модели в QListView.  Мы напишем свою версию Проводника Windows. Конечно, она не будет обладать всем функционалом, но, для демонстрации возможностей виджета, этого будет достаточно.

Источником данных для модели может быть любой источник данных, на этот раз этим источником будет файловая система ПК.

В этой статье мы рассмотрим работу QListView в режиме отображения иконок.

В качестве основы будем использовать проект из предыдущей статьи.

Сегодня мы рассмотрим новый виджет QListView. Он может работать в двух режимах, в первом это обычный список, во втором - список иконок, аналогичный тому, что используется в проводнике Windows, для отображения файлов и папок.

В этой статье мы рассмотрим работу QListView в режиме списка.

В прошлой статье мы рассмотрели создание модели для QComboBox. Сегодня мы рассмотрим создание Делагата для QComboBox. Что такое Делегаты и для чего они нужны мы рассмотрим в отдельном материале, сегодня же я просто продемонстрирую, как для QComboBox добавить иконки перед каждым пунктом и выровнять надписи по правому краю.

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

Для этого примера я буду использовать код из предыдущей статьи.

Так же вам понадобятся иконки с флагами государств, скачать архив вы можете отсюда – ссылка на Яндекс.Диск - https://yadi.sk/d/_N4v7pySleb07A или взять с Github.

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

Вывод данных в виде таблицы является, пожалуй, самым удобным и наглядным способом предоставления информации пользователю. Существует два способа наполнения таблиц данными:

  1. С использованием массива — в этом случае все элементы таблицы доступны по их индексам и вы можете легко получить или назначить значение ячейки таблицы, например: table[0][0]
  2. С помощью модели — в этом случае за наполнение таблицы данными отвечает модель — класс, который знает о таблице всё — количество строк и столбцов и значение каждой ячейки. Наполнение и доступ к информации, в данном случае, осуществляется с помощью строго определенных методов класса. Таким образом, внутренняя реализация модели не важна - мы всегда можем получить доступ к данным с помощью стандартизированного интерфейса.

В этой и последующих статьях я, иногда, буду называть виджеты Qt5 - компонентами.

Сегодня мы рассмотрим создание простой модели для виджета QComboBox. О том что такое модели и зачем они нужны, вы можете прочитать в этой статье.

Обновлено 07.12.2020. В связи с выходом статьи, посвященной моделям, убрано вступление, оставлена только практическая часть!