Я использую QStyledItemDelegate в QListView.
class ViewDelegate : public QStyledItemDelegate
{
protected:
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
QImage image = index.model()->data(index.model()->index(index.row(), 0), Qt::ForegroundRole).value<QImage>();
QStyle* style = opt.widget ? opt.widget->style() : QApplication::style();
style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, opt.widget);
QRect rect = opt.rect;
float zoomFactor = 1.0;
// Zoom When Selected
if (opt.state & QStyle::State_Selected)
{
zoomFactor = 1.5;
}
painter->drawImage(QRect(rect.left(), rect.top(), image.width() *zoomFactor, image.height()* zoomFactor), image);
}
Поскольку он используется как
QListView* listView = new QListView();
listView->setItemDelegate(new ViewDelegate());
У меня проблема в том, что перед этим что-то вызывает другой метод рисования. Как на рисунке, я вижу и изображение по умолчанию, которое нарисовано, и мое масштабированное изображение поверх этого.