Изображения в таблице Qt

Изображения в таблице Qt

О таблицах в Qt мы уже говорили, когда рассматривали концепцию Модель-Представление в Qt и помещали QProgressBar в QTableView. Теперь убедимся, что добавлять изображения в Qt-таблицы еще проще.

Подготовительный этап

Создадим каркас приложения, состоящего из таблицы QTableWidget и простой командной ссылки. Начинаем с заголовочного файла imagetableviewdemowidget.h:

А теперь часть реализации imagetableviewdemowidget.cpp:

Наша таблица будет включать два столбца: имя файла и изображение. Добавление изображения будет происходить после нажатия на гиперссылку Load Image..., размещенную под таблицей.

Реализация вставки изображения в таблицу

Переходим к основному блюду. Реализация оставленной нами функции:

Вставка картинки происходит путем добавления элемента QTableWidgetItem с ролью Qt::DecorationRole. По умолчанию высота строки не подстраивается под размер изображения, поэтому приходится менять ее вручную. Обратите внимание, что для этого мы используем заготовленную константу IMAGE_VMARGIN.

Если требуется использовать архитектуру Модель-Представление, то реализация отличается не намного. В этом случае достаточно организовать корректную обработку запроса данных Модели в перегруженной функции-члене data():

Замечание: Если изображение слишком большое, то оно может некорректно отображаться в ячейке таблицы. Поэтому в реальном приложении необходимо четко контролировать его размер. В таблицу лучше помещать уменьшенную копию исходной картинки — thumbnail. Достигнуть этого можно разными способами. Например, используя QTableWidgetItem с иконкой QIcon. В этом случае размер изображений контролируется централизовано на уровне всей таблицы.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий