Среда, 16 декабря 2020 19:00

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

Россия
Оцените материал
(0 голосов)

Сегодня мы рассмотрим новый виджет 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, просто заменив один компонент другим, мы сэкономили много времени.

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

Прочитано 8454 раз Последнее изменение Среда, 13 января 2021 12:14