blob: 83d8cc3b1fc094033e79fcde00fe6bcf9811976d (
plain) (
blame)
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 "centerediconitemdelegate.h"
#include <QApplication>
#include <QPainter>
CenteredIconItemDelegate::CenteredIconItemDelegate(QObject* parent) :
QStyledItemDelegate(parent)
{
}
void CenteredIconItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const
{
if (!index.isValid())
return;
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
// disable default icon
opt.icon = QIcon();
if (opt.features.testFlag(QStyleOptionViewItem::HasDecoration))
opt.features ^= QStyleOptionViewItem::HasDecoration;
// draw default item
QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter, 0);
const QRect r = option.rect;
// get pixmap
QIcon icon = qvariant_cast<QIcon>(index.data(Qt::DecorationRole));
QPixmap pix = icon.pixmap(r.size());
// draw pixmap at center of item
const QPoint p = QPoint((r.width() - pix.width()) / 2, (r.height() - pix.height()) / 2);
painter->drawPixmap(r.topLeft() + p, pix);
}
|