假设我的模型包含Qt::DisplayRole具有以下字符串的项
blah-blah some text other blah
我希望QTreeView (实际上是任何项目视图)将其呈现为富文本。相反,默认情况下,项视图将其呈现为纯文本。如何实现所需的渲染?
实际上,这是一个搜索结果模型。用户输入一个文本,针对该文本搜索一些文档,并向用户显示搜索结果,其中被搜索的单词应该比周围的文本更粗体。
发布于 2011-11-07 20:41:26
这个是用PySide写的。我将QPainter传递给QLabel并让它自己绘制,而不是进行大量的自定义绘制。突出显示从其他答案借用的代码。
from PySide import QtGui
class TaskDelegate(QtGui.QItemDelegate):
#https://doc.qt.io/archives/qt-4.7/qitemdelegate.html#drawDisplay
#https://doc.qt.io/archives/qt-4.7/qwidget.html#render
def drawDisplay(self, painter, option, rect, text):
label = QtGui.QLabel(text)
if option.state & QtGui.QStyle.State_Selected:
p = option.palette
p.setColor(QtGui.QPalette.WindowText, p.color(QtGui.QPalette.Active, QtGui.QPalette.HighlightedText))
label.setPalette(p)
label.render(painter, rect.topLeft(), renderFlags=QtGui.QWidget.DrawChildren)
https://stackoverflow.com/questions/1956542
复制相似问题