Как вычеркнуть текст 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)

Таким образом, вы можете сохранить другие параметры шрифта элемента, ранее установленные.

Другие вопросы по тегам