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