def paint(self, painter, option, index): ''' Use the QTextDokument to represent the HTML text. @see: U{http://www.pyside.org/docs/pyside/PySide/QtGui/QAbstractItemDelegate.html#PySide.QtGui.QAbstractItemDelegate} ''' options = QStyleOptionViewItem(option) self.initStyleOption(options, index) style = QApplication.style( ) if options.widget is None else options.widget.style() doc = QTextDocument() doc.setHtml(self.toHTML(options.text)) # doc.setTextWidth(option.rect.width()) options.text = '' style.drawControl(QStyle.CE_ItemViewItem, options, painter) ctx = QAbstractTextDocumentLayout.PaintContext() # Highlighting text if item is selected # if (optionV4.state and QStyle::State_Selected): # ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText)); textRect = style.subElementRect(QStyle.SE_ItemViewItemText, options, options.widget) painter.save() painter.translate( QPoint(textRect.topLeft().x(), textRect.topLeft().y() - 3)) painter.setClipRect(textRect.translated(-textRect.topLeft())) doc.documentLayout().draw(painter, ctx) painter.restore()
def sizeHint(self, option, index): ''' Determines and returns the size of the text after the format. @see: U{http://www.pyside.org/docs/pyside/PySide/QtGui/QAbstractItemDelegate.html#PySide.QtGui.QAbstractItemDelegate} ''' options = QStyleOptionViewItem(option) self.initStyleOption(options, index) return QSize(options.rect.width(), 25)
def sizeHint(self, option, index): ''' Determines and returns the size of the text after the format. @see: U{http://www.pyside.org/docs/pyside/PySide/QtGui/QAbstractItemDelegate.html#PySide.QtGui.QAbstractItemDelegate} ''' options = QStyleOptionViewItem(option) self.initStyleOption(options, index) doc = QTextDocument() doc.setHtml(options.text) doc.setTextWidth(options.rect.width()) metric = QFontMetrics(doc.defaultFont()) return QSize(doc.idealWidth(), metric.height() + 4)