Я пытаюсь создать таблицу, в которой каждый элемент содержит пару строк, например:
В идеале, шрифт верхнего ряда должен быть другим (а не только жирным шрифтом).
Мое решение состоит в том, чтобы создать подкласс QItemDelegate и перегрузить paint
и sizeHint.
На приведенной выше диаграмме показано, что paint
работает правильно, но я не смог выяснить sizeHint
. Вот что я попробовал (сейчас делаю элементы с одной строкой):
def sizeHint(self, option, index):
index_data = index.data(Qt.SizeHintRole)
if index_data is None:
return QSize()
size = QItemDelegate.textRectangle(None,
textLayoutBounds(option),
option.font, str(index_data))
return size
К сожалению, в PyQt защищенная функция-член textRectangle
(вызываемая по умолчанию sizeHint) недоступна. Как правильно это сделать?