Настройка фоновой таблицы стилей на QWidget отображается на всех элементах управления - PullRequest
3 голосов
/ 11 сентября 2011

Я установил следующий CSS в таблицу стилей QWidget:

QWidget { background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #00b7ea, stop: 1 #009ec3); /* Chrome10+,Safari5.1+ */ }

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

enter image description here

Может кто-нибудь помочь мне исправить это.

Я пытался использовать QFrame, но всегда получаю границу вокруг фрейма, например:

enter image description here

1 Ответ

6 голосов
/ 11 сентября 2011

Когда вы устанавливаете таблицу стилей для QWidget, таблица стилей применяется к этому QWidget и всей дочерней иерархии этого виджета. Поскольку вы используете QWidget в качестве селектора, стиль будет применяться к любому QWidget или QWidget подклассу . QPushButton является подклассом QWidget, поэтому к нему применяется правило стиля.

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

Если у вас есть другие QWidget в дочерней иерархии, вы можете быть более избирательными, указав класс и свойство objectName, используя Classname#objectName.

Вы должны прочитать этот раздел документации Qt для получения дополнительной информации.

...