Чтобы сэкономить время, мы будем использовать проект из этой статьи.
Просто переименуйте папку с проектом в QLitsView и файл из QComboBoxIcons.pro в QLitsView.pro
Изменим главную форму, удалим QComboBox и добавим QListView.
Разместим кнопки снизу от списка. У нас получится:
В реализации главной формы поменяем 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.