使用基于PyQt4的QTreeView,我创建了2个xml树小部件。从两棵树中,想要比较所选项目并突出显示差异。例如,
左弦:" CompareString" 正确的字符串:" ComPareStringRight"
差异的观察:
现在,想要根据以下颜色设置颜色:
我该如何实现?无法找到任何参考实现来接收。请提出一条前进的道路。
class QCustomDelegate (QItemDelegate): global showDiffPaint def paint (self, painterQPainter, optionQStyleOptionViewItem, indexQModelIndex): column = indexQModelIndex.column() if showDiffPaint == 1: QItemDelegate.paint(self, painterQPainter, optionQStyleOptionViewItem, indexQModelIndex) else: QItemDelegate.paint(self, painterQPainter, optionQStyleOptionViewItem, indexQModelIndex)
答案 0 :(得分:0)
挖掘后,发现将文本转换为html很有用,如下所示。 然而,由于"发现了错误。和<和>字符显示。我认为我需要以某种方式逃脱...
options = QStyleOptionViewItemV4(option)
doc = QTextDocument()
doc.setHtml(txt1)
doc.setTextWidth(option.rect.width())
style = QApplication.style()
style.drawControl(QStyle.CE_ItemViewItem, options, painter)
ctx = QAbstractTextDocumentLayout.PaintContext()
textRect = style.subElementRect(QStyle.SE_ItemViewItemText,
options)
painter.translate(textRect.topLeft())
painter.setClipRect(textRect.translated(-textRect.topLeft()))
doc.documentLayout().draw(painter, ctx)