Среда, 16.12.2020 08:00

QListView Модель и Делегат. - Работа с моделями в Qt для отображения данных в виджетах. Часть 4

QListView Модель и Делегат. - Работа с моделями в Qt для отображения данных в виджетах. Часть 4

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

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

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

Просто переименуйте папку с проектом в QLitsView и файл из QComboBoxIcons.pro в QLitsView.pro

Изменим главную форму, удалим QComboBox и добавим QListView.

Разместим кнопки снизу от списка. У нас получится:

2020-12-16_11-01-05.png

В реализации главной формы поменяем this->ui->comboBox на this->ui->listView

В методе on_pushButton_2_clicked() изменим единственную строку на:

model->update(ui->listView->currentIndex().row(), CountryFlag(66, "Japan", "japan.png"));

Обратите внимание, в QListView метод currentIndex() возвращает экземпляр класса QModelIndex, поэтому, чтобы получить текущую стоку, мы используем метод row().

Запускаем и пробуем как работают кнопки.

На этом всё, как видите уже созданная модель может использоваться с разными виджетами.

Заключение

Сегодня мы рассмотрели использование Модели и Делегата для вывода строк в виджете QListView.

Благодаря архитектуре Model/View, просто заменив один компонент другим, мы сэкономили много времени.

Код проекта вы можете найти на GitFlic.

Категория Модели
Теги Делегат Qt

Комментарии

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 156