Как я могу установить QPushButton для вертикального роста? - PullRequest
0 голосов
/ 24 октября 2019

Фон : мне нужно Командная ссылка -подобные элементы управления. Обычно я бы использовал встроенную в Qt QCommandLinkButton, но в этом случае мне нужно также поддерживать макеты справа налево. К сожалению, QCommandLinkButton, похоже, не соблюдает Qt::RightToLeft, когда установлено явно через setLayoutDirection. Также не существует способа переопределить направление макета с помощью таблиц стилей.

Я попытался обойти эту проблему с помощью QPushButton: я создал экземпляр QPushButton и заменил его содержимое на пользовательское. макет, содержащий две метки, уложенные вертикально. Это не сработало, потому что QPushButton отказался расширяться по горизонтали.

Не удалось заставить QPushButton экземпляры работать, я решил попробовать разбить их на подклассы. Независимо от того, что я пытался (переопределив sizeHint, установив вертикальное sizePolicy для расширения, resize явно и т. Д.), Кнопка отказывается расти более чем на 30 пикселей в высоту.

Если я изменю QPushButton на QWidget, новый виджет будет нормально расти.

Вопрос : Как заставить QPushButton расти вертикально иподходят его внутренние виджеты? Если это невозможно, каковы мои варианты для виджета в виде кнопки, который визуально и поведенчески совместим с QPushButton и другими «нативными» элементами управления?

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Мне удалось заставить кнопку нормально расти, установив максимальную высоту 16777214 (вместо значения по умолчанию 16777215), а затем установив поля содержимого кнопки равными 10.

Недоумение, максимум по умолчаниюВысота QPushButton должна быть достаточной, но по какой-то причине она отказывается расти выше 30 пикселей, если максимальная высота явно не установлена ​​на что-то другое.

0 голосов
/ 24 октября 2019

Поместите кнопку внутри макета и установите для vertical size policy значение Maximum.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...