Как вычеркнуть текст QStandardItem в Qt/PyQt?
У меня есть QStandardItemModel
в PySide, и хотите зачеркнуть текст в определенных строках (это список приложений, и когда задача выполнена, я хочу зачеркнуть текст). Учитывая QStandardItem
это отображается нормально, основываясь на документации, которую я пытаюсь зачеркнуть по тексту:
QStandardItem.setFont(QtGui.QFont.setStrikeOut(True))
Но текст остается неизменным, и я получаю сообщение об ошибке:
TypeError: descriptor 'setStrikeOut' requires a 'PySide.QtGui.QFont' object but received a 'bool'
1 ответ
Решение
setStrikeOut
возвращается void
и вы не должны передавать это в качестве аргумента setFont
, Вы должны передать экземпляр QFont
там.
Было бы лучше извлечь шрифт рассматриваемого элемента, установить его зачеркнутое свойство, а затем установить этот исправленный QFont
как новый шрифт элемента:
f = item.font()
f.setStrikeOut(True)
item.setFont(f)
Таким образом, вы можете сохранить другие параметры шрифта элемента, ранее установленные.