Какой виджет Qt использовать для реализации браузера эскизов изображений (отображение плит)? - программирование

Какой виджет Qt использовать для реализации браузера эскизов изображений (отображение плит)?

Я хочу существенно повторить это:

enter image description here

Каков наиболее подходящий виджет контейнера Qt для отображения моих пользовательских виджетов, содержащих изображение + индекс? Я смотрю на QTableView, и, кажется, предполагается, что у меня есть определенное количество строк/столбцов, в то время как я хочу, чтобы моя программа меняла макет в зависимости от ширины окна (чтобы не было горизонтальной прокрутки) и добавляя новые виджет должен выполняться с помощью addWidget(QWidget * w), а не setWidget(int row, int column, QWidget * w). Есть ли для этого лучший компонент, чем QTableView (для чего требуется много кодирования для моей задачи)?

4b9b3361

Ответ 1

Вы должны использовать QListWidget (или QListView и подкласс QAbstractItemModel) и установить его режим просмотра на IconMode.

Пример:

m_listeWidget->setViewMode(QListWidget::IconMode);

m_listeWidget->setIconSize(QSize(200,200));

m_listeWidget->setResizeMode(QListWidget::Adjust);

m_listeWidget->addItem(new QListWidgetItem(QIcon("../earth.jpg"),"Earth"));
m_listeWidget->addItem(new QListWidgetItem(QIcon("../tornado.jpg"),"Tornado"));
m_listeWidget->addItem(new QListWidgetItem(QIcon("../ics.jpg"),"Wallpaper"));

Результат:

enter image description here

Ответ 2

Определенно QTableView, Используя пользовательский элемент itemDelegate для представления каждого блока, реализует пользовательский виджет, чтобы отображать заголовок изображения и текста