Общим вопросом в сети является то, как отображать html с помощью qstyleditemdelegate в qlistview. Обычный ответ является вариантом следующего кода https://stackoverflow.com/a/5443112/2033030pyqt qstyleditemdelegate word wrap и html
class HTMLDelegate(QtGui.QStyledItemDelegate):
def paint(self, painter, option, index):
options = QtGui.QStyleOptionViewItemV4(option)
self.initStyleOption(options,index)
style = QtGui.QApplication.style() if options.widget is None else options.widget.style()
doc = QtGui.QTextDocument()
doc.setHtml(options.text)
options.text = ""
style.drawControl(QtGui.QStyle.CE_ItemViewItem, options, painter);
ctx = QtGui.QAbstractTextDocumentLayout.PaintContext()
if option.state & QStyle.State_Selected:
ctx.palette.setColor(QPalette.Text, option.palette.color(QPalette.Active, QPalette.HighlightedText))
else:
ctx.palette.setColor(QPalette.Text, option.palette.color(QPalette.Active, QPalette.HighlightedText))
textRect = style.subElementRect(QtGui.QStyle.SE_ItemViewItemText, options)
painter.save()
painter.translate(textRect.topLeft())
painter.setClipRect(textRect.translated(-textRect.topLeft()))
doc.documentLayout().draw(painter, ctx)
painter.restore()
def sizeHint(self, option, index):
options = QtGui.QStyleOptionViewItemV4(option)
self.initStyleOption(options,index)
doc = QtGui.QTextDocument()
doc.setHtml(options.text)
doc.setTextWidth(options.rect.width())
return QtCore.QSize(doc.idealWidth(), doc.size().height())
Это также то, что я на самом деле не понимая его. Итак, мой главный вопрос - как включить перенос слов? Я много пробовал, но так и не сделал.
Вопрос второй стороны: может кто-то объяснить мне, что делает этот код, это немного подозрительно в моих глазах. Сначала он создает параметр options var var из исходного параметра параметра, но код, по-видимому, использует один и другой ramdomly, поэтому я подозреваю, что мы могли бы просто использовать параметр параметра без изменений. то для этого требуется создать два раза QTextDocument, как по краске, так и по размеру. Тогда стиль используется в DrawControl, но не при рисовании QTextDocument ....
Я сохранил оба вопроса в одном сообщении, поэтому мы, надеюсь, вместе можем подойти к одному примеру кода, который имеет смысл и может использоваться многими как начальная точка.