Почему высота QSize, установленная в sizeHint, возвращает QRect с удвоенной высотой?

Я чувствую, что пропускаю что-то чрезвычайно очевидное, но ничего не могу найти в этом.

У меня есть пользовательский делегат элемента, для которого я установил высоту sizeHint равной 50, но оператор печати возвращает прямоугольник, который в два раза превышает высоту.

def sizeHint(self, option, index):
    print("sizehint:", option.rect)
    s = QtCore.QSize()
    s.setWidth(option.rect.width())
    s.setHeight(50)
    return s

#output
sizehint: PySide2.QtCore.QRect(0, 0, 498, 100)

1 ответ

"Option.rect" - это прямоугольник, который представление рекомендует с учетом имеющейся у него общей информации (например, размер шрифта, ширина заголовка и т. Д.), Которую делегат должен использовать в качестве ссылки для своего рисования. или взаимодействие. Прямоугольник не принимает информацию о каждом элементе (информацию, которую вы хотите отобразить) время от времени, поэтому делегат предлагает sizeHint() в качестве рекомендуемого размера. На самом деле, если вы хотите получить размер по умолчанию, вам следует использовать super.

def sizeHint(self, option, index):
    default_size_hint = super().sizeHint(option, index)
    print("sizehint:", default_size_hint)
    return QtCore.QSize(option.rect.width(), 50)
Другие вопросы по тегам