mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-19 06:15:26 +00:00
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:
parent
345b01750a
commit
774a785a99
2 changed files with 35 additions and 0 deletions
|
@ -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());
|
||||
}
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue