Страницы

Поиск по вопросам

пятница, 24 января 2020 г.

QTableView отображение изображения

#cpp #база_данных #qt #listview #tableview


Допустим есть класс Book. В нем хранится описание книги и QImage. Как мне переопределить
методы QAbstractTableModel чтобы в первом столбце выводилось это изображение, а во
втором - текст. 
Не проще ли будет использовать QAbstrctListModel и в нем изменить ItemDelegate. Как
это сделать?
    


Ответы

Ответ 1



Наиболее простой вариант - использовать роль Qt::DecorationRole при формировании значения ячейки в функции QAbstractItemModel::data. С помощью этой роли можно выводить в ячейке QImage (еще можно QIcon или QPixmap) без использования специальных делегатов. Конкретно вывод картинок, при обработке роли Qt::DecorationRole, выполняет стандартный QStyledItemDelegate, этот делегат работает по умолчанию в представлениях. Либо проследите, что делегат, который вы используете, корректно обрабатывает роль Qt::DecorationRole. Так например, другой стандартный делегат QItemDelegate, будет выводить только QIcon или QPixmap, а QImage не будет.

Комментариев нет:

Отправить комментарий