QStyleOptionViewItemV4 options = option;
initStyleOption(&options, index);
painter->save();
doc.setHtml(options.text);
// Set the maximum text width
//doc.setTextWidth(75);
// Calculate the icon size
QIcon icon
= options.
icon;
QSize iconSize
= options.
icon.
actualSize(options.
rect.
size());
iconSize.scale(iconSize.width() - qRound(doc.idealWidth()), iconSize.height(), Qt::KeepAspectRatio);
options.text = "";
options.icon = icon.pixmap(iconSize);
options.decorationAlignment = Qt::AlignLeft |Qt::AlignVCenter;
style
->drawControl
(QStyle::CE_ItemViewItem,
&options, painter, options.
widget);
// To support html tags in the text
painter->translate(options.rect.left() + iconSize.width(), options.rect.top());
QRect clip
(0,
0, options.
rect.
width() + iconSize.
width(), options.
rect.
height());
doc.drawContents(painter, clip);
painter->restore();
}
QStyleOptionViewItemV4 options = option;
initStyleOption(&options, index);
doc.setHtml(options.text);
doc.setTextWidth(options.rect.width());
QSize size
= QStyledItemDelegate
::sizeHint(option, index
);
return QSize(size.
width() > doc.
idealWidth() ? size.
width() : doc.
idealWidth(),
size.height() > doc.size().height() ? size.height() : doc.size().height());
}
void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const {
QStyleOptionViewItemV4 options = option;
initStyleOption(&options, index);
painter->save();
QTextDocument doc;
doc.setHtml(options.text);
// Set the maximum text width
//doc.setTextWidth(75);
// Calculate the icon size
QIcon icon = options.icon;
QSize iconSize = options.icon.actualSize(options.rect.size());
iconSize.scale(iconSize.width() - qRound(doc.idealWidth()), iconSize.height(), Qt::KeepAspectRatio);
options.text = "";
options.icon = icon.pixmap(iconSize);
options.decorationAlignment = Qt::AlignLeft |Qt::AlignVCenter;
options.decorationPosition = QStyleOptionViewItem::Left;
QStyle *style = options.widget ? options.widget->style() : QApplication::style();
style->drawControl(QStyle::CE_ItemViewItem, &options, painter, options.widget);
// To support html tags in the text
painter->translate(options.rect.left() + iconSize.width(), options.rect.top());
QRect clip(0, 0, options.rect.width() + iconSize.width(), options.rect.height());
doc.drawContents(painter, clip);
painter->restore();
}
QSize ItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const {
QStyleOptionViewItemV4 options = option;
initStyleOption(&options, index);
QTextDocument doc;
doc.setHtml(options.text);
doc.setTextWidth(options.rect.width());
QSize size = QStyledItemDelegate::sizeHint(option, index);
return QSize(size.width() > doc.idealWidth() ? size.width() : doc.idealWidth(),
size.height() > doc.size().height() ? size.height() : doc.size().height());
}
To copy to clipboard, switch view to plain text mode
options.decorationAlignment = Qt::AlignLeft |Qt::AlignVCenter;
options.decorationAlignment = Qt::AlignLeft |Qt::AlignVCenter;
To copy to clipboard, switch view to plain text mode
Bookmarks