如何删除 Qt/PyQt 中 QStandardItem 的文本?

How to strikeout text of QStandardItem in Qt/PyQt?

我在 PySide 中有一个 QStandardItemModel,我想删除某些行上的文本(这是一个待办事项列表应用程序,当任务完成时,我想删除文本)。鉴于 QStandardItem 显示正常,based on the documentation 我尝试用删除线删除文本:

QStandardItem.setFont(QtGui.QFont.setStrikeOut(True))

但是文本没有改变,我得到错误:

TypeError: descriptor 'setStrikeOut' requires a 'PySide.QtGui.QFont' object but received a 'bool'

setStrikeOut returns void 并且您不应将其作为 setFont 的参数传递。你应该在那里传递一个 QFont 的实例。

最好检索有问题的项目的字体,设置它的删除线 属性,然后将修改后的 QFont 设置为项目的新字体:

f = item.font()
f.setStrikeOut(True)
item.setFont(f)

这样您就可以保留之前设置的项目字体的其他选项。