-
Notifications
You must be signed in to change notification settings - Fork 0
/
delegate.cpp
35 lines (29 loc) · 1.16 KB
/
delegate.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "delegate.h"
#include <QBitmap>
#include <QDebug>
void Delegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
auto pix = index.data(Qt::DecorationRole).value<QPixmap>();
if (pix.isNull()) {
emit requestImage(index);
return;
}
// QPixmap pix;
// pix.loadFromData(index.data(Qt::UserRole + 5).toByteArray());
painter->save();
pix = pix.scaled(option.rect.size(), Qt::KeepAspectRatio, Qt::TransformationMode::SmoothTransformation);
QApplication::style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter);
QApplication::style()->drawPrimitive(QStyle::PE_PanelItemViewRow, &option, painter);
QApplication::style()->drawItemPixmap(
painter
, option.rect
, Qt::AlignmentFlag::AlignAbsolute
, pix
);
painter->restore();
}
QSize Delegate::sizeHint(const QStyleOptionViewItem &option,const QModelIndex &index) const
{
auto size = index.data(Qt::SizeHintRole).value<QSize>();
return size.scaled(option.rect.width(), 0, Qt::KeepAspectRatioByExpanding);//.grownBy(QMargins(0, 4, 0, 0));
}