Какой виджет Qt использовать для реализации браузера эскизов изображений (отображение плит)?
Я хочу существенно повторить это:
![enter image description here]()
Каков наиболее подходящий виджет контейнера Qt для отображения моих пользовательских виджетов, содержащих изображение + индекс? Я смотрю на QTableView
, и, кажется, предполагается, что у меня есть определенное количество строк/столбцов, в то время как я хочу, чтобы моя программа меняла макет в зависимости от ширины окна (чтобы не было горизонтальной прокрутки) и добавляя новые виджет должен выполняться с помощью addWidget(QWidget * w)
, а не setWidget(int row, int column, QWidget * w)
. Есть ли для этого лучший компонент, чем QTableView (для чего требуется много кодирования для моей задачи)?
Ответы
Ответ 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 для представления каждого блока,
реализует пользовательский виджет, чтобы отображать заголовок изображения и текста