#python #pyqt #pyqt5 #border #stylesheet
#python #pyqt #pyqt5 #граница #таблица стилей
Вопрос:
У меня есть QTableView, который переопределяет sizeHint() и возвращает QSize путем сложения высот / ширин всех столбцов / строк высоты / ширины заголовков.
Однако результат все еще немного слишком мал и показывает полосы прокрутки, если я тоже…
- Задайте для таблицы стилей значение
border-width: 0;
- Добавьте 2 пикселя к sizeHint
Я хочу границы, так что остается # 2. Но теперь мне нужно иметь возможность заставить пользователя изменить стиль, который может изменить размер границы, поэтому вместо простого добавления 2px
мне нужно получить border-width*2
. Как я могу это сделать?
Следующий код возвращает prints 3
, что неверно, но это единственная ссылка на границы, которую я смог найти в документах QStyle
style = self.style()
print(style.pixelMetric(style.PM_MenuPanelWidth))
Комментарии:
1. Может быть небольшой запас (обычно 1-2 пикселя), который можно вычислить с помощью
table.width() - table.viewport().width()
. Также естьtable.frameWidth()
, но я не знаю, как это взаимодействует с таблицами стилей — и в любом случае, размер виджета не включает его рамку.2. 2 * frameWidth() сработал, спасибо! В итоге все равно получается неправильный размер при использовании темы qdarkstyle, но я уверен, что это не связано с шириной границы, и это работает для встроенных тем.
3. Вы проверили поля? Я почти уверен, что margin и frame-width будут иметь схожие значения (но это вполне может зависеть от стиля).