Added a HTML Displayable Delegate

Added a HTML delegate to show rendered HTML on print.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-07-17 20:10:44 -03:00 committed by Dirk Hohndel
parent 345b01750a
commit 774a785a99
2 changed files with 35 additions and 0 deletions

View file

@ -17,6 +17,7 @@
#include <QKeyEvent>
#include <QAbstractItemView>
#include <QApplication>
#include <QTextDocument>
QSize DiveListDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
@ -399,3 +400,31 @@ QWidget *DoubleSpinBoxDelegate::createEditor(QWidget *parent, const QStyleOption
w->setSingleStep(step);
return w;
}
void HTMLDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
QStyleOptionViewItemV4 options = option;
initStyleOption(&options, index);
painter->save();
QTextDocument doc;
doc.setHtml(options.text);
doc.setTextWidth(options.rect.width());
doc.setDefaultFont(options.font);
options.text.clear();
options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter);
painter->translate(options.rect.left(), options.rect.top());
QRect clip(0, 0, options.rect.width(), options.rect.height());
doc.drawContents(painter, clip);
painter->restore();
ProfilePrintDelegate::paint(painter,option,index);
}
QSize HTMLDelegate::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());
return QSize(doc.idealWidth(), doc.size().height());
}

View file

@ -110,4 +110,10 @@ private:
double step;
};
class HTMLDelegate : public ProfilePrintDelegate {
Q_OBJECT
public:
virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
#endif // MODELDELEGATES_H