Закругленные углы не отображаются для QPushButton в Qt Designer

Я хочу, чтобы углы были закруглены и зависали для QPushButton в дизайнере Qt. Изменение таблицы стилей не влияет. Что я делаю неправильно?

    QPushButton#pushButton_3{
        background: rgb(170, 170, 255);
        border: 2px  solid  rgb(0, 170, 255);
        border-style: outset;
        border-width: 2px;
        border-radius: 20px;
        color: white;   
    }
    
    QPushButton:hover#pushButton_3{
        background-color:  rgb(0, 255, 255);
        border: 2px  solid  (0, 255, 255);
    }

Вот что я получаю, когда указанная выше таблица стилей установлена:

Закругленные углы не отображаются для QPushButton в Qt Designer

Радиус в 20 пикселей, безусловно, слишком много, когда граница диаметр больше, чем наименьший размер прямоугольника, она будет проигнорирована. Уменьшите его до меньшего значения, например, 4 или 6. Кроме того, избегайте ненужных пробелов и не смешивайте пробелы с табуляциями (даже если это не проблема для таблиц стилей, это все равно считается плохой практикой).

musicamante 13.05.2022 18:16

Уменьшил радиус до меньшего значения. это сработало

Pari 13.05.2022 18:41
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TL;DR

Используйте меньшие значения для border-radius, обычно половину стандартного размера шрифта (2 <= радиус <= 10).

Дальнейшее объяснение

Радиус границы QSS должен имеет приемлемое значение.

Частный QStyleSheetStyle нормализует радиус границы (или, лучше, все четыре радиуса границы) на основе ограничивающего прямоугольника виджета, который включает размер (размеры) границы.

Всякий раз, когда радиус границы Любые превышает размер, относящийся к ее углу, все радиусы игнорируются.

Например, если прямоугольник виджета имеет высоту 10, сумма его радиусов top-left и bottom-left должен быть равен или меньше 10, иначе левый угол будет квадратным.

Обратите внимание, что виджеты обычно учитывают границу только для подсказки размера, а не подсказки размера минимум, и это поведение также может меняться в зависимости от текущего стиля.

Кнопка обычно создается с использованием pixelMetric() и fontMetrics() текущего стиля, и, поскольку довольно стандартная высота кнопки составляет ~ 30 пикселей, учитывая вышеизложенное, указанный border-radius является чрезмерным: сумма любого углового компонента всегда больше, чем высота виджета. , поэтому радиусы игнорируются, а граница будет квадратной.

Итак, как установить правильный радиус границы?

Простой ответ: используйте «маленькие» значения, обычно не более чем в два или четыре раза превышающие ширину границы.

Ответ действительный более сложен, поскольку нам нужно учитывать, что виджеты часто имеют некоторый отображаемый текст, и любая современная ОС поддерживает оба масштабирования шрифта и на экранах с высоким разрешением.

QSS поддерживает различные типы длины, отличные от стандартного px:

  • px: пиксели (как правило, физические пиксели, AFAIK, фактическое значение зависит от ОС и их реализации High DPI);
  • pt: размер одной точки (на основе DPI экрана, AFAIK, используется только для свойств текста и игнорируется для размеров виджета/границы);
  • em: ширина шрифта в em (на основе отображаемый шрифт);
  • ex: x-высота шрифта (как указано выше);

Если вы хотите должным образом поддерживать любую современную ОС, вам, вероятно, потребуется использовать любое из двух последних значений, и это еще одна причина, по которой важно установить глобальную таблицу стилей для приложения: пока приложение создано, вы можете знать шрифты по умолчанию (или импортированные) и, в конечном итоге, установить основную таблицу стилей с отформатированной шириной или размером на основе текущего соотношения пикселей устройства и показателей шрифта.

Другие вопросы по теме