Почему высота QSize, установленная в sizeHint, возвращает QRect с двойной высотой? - PullRequest
0 голосов
/ 22 апреля 2020

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

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

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 Ответ

2 голосов
/ 22 апреля 2020

"option.rect" - это прямоугольник, который представление рекомендует учитывать с учетом общей информации c (например, размер шрифта, ширина заголовка и т. Д. c.), делегат должен принимать за ссылку для его рисования или взаимодействия. Прямоугольник не принимает информацию о каждом элементе (информацию, которую вы хотите отобразить) время от времени, поэтому делегат предлагает 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)
...