Какой виджет 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 для представления каждого блока, реализует пользовательский виджет для отображения заголовка изображения и текста

Другие вопросы по тегам