Подтвердить что ты не робот

Как я могу сделать виджет Qt игнорировать таблицы стилей, установленные на родительских виджетах?

При добавлении элемента управления QComboBox в Qt Designer я получаю ужасный внешний вид, не относящийся к нему, см.:

http://curiouschap.com/wp-content/uploads/2010/05/stack_qcombobox_question.png [как новичок, SO не разрешил мне вставлять изображение]

При дальнейшем росте, оказывается, что два родительских элемента управления QParentWindow и QStackedWidget имеют таблицы стилей, которые наследует QComboBox. Если я удалю пользовательские стили, я получаю собственный QComboBox, как тот, который находится слева.

Как я могу получить QComboBox (и виджетов вообще) НЕ наследовать родительские стили? Или, как я могу создать стиль для, скажем, QParentWindow, и делать это так, чтобы он был локальным только и не каскадировался?

4b9b3361

Ответ 1

Я не думаю, что вы можете предотвратить его каскадирование. Но, используя более конкретные селектора в вашей таблице стилей, возможно, вы можете определить свойства только для вашего класса QParentWindow или для конкретного объекта.

Ответ 2

вам нужно определить стиль, а затем назначить его этому объекту:

QString settingStyle = " QGroupBox#groupBoxSettings {\
        background-color: rgb(248,248,248);\
        border: 1px solid rgb(170, 170, 255);\
        border-radius: 3px;\
        border-color:rgb(170, 170, 255);\
}";


ui->groupBoxSettings->setStyleSheet(settingStyle);

здесь "groupBoxSettings" - это имя объекта. Таким образом, любая вещь внутри группового ящика будет иметь свой собственный стиль.