Qt 4: Как установить внешнюю границу для QWidget, чтобы его внутренние виджеты не изменялись? - PullRequest
7 голосов
/ 25 октября 2011

У меня довольно странная проблема. У меня есть QWidget с QHBoxLayout на нем. Макет содержит два QLabels. Я хочу установить границу для всего этого виджета. Я использую таблицу стилей:

 "padding: 10px;"
 "border-style: solid;"
 "border-width: 3px;"
 "border-radius: 7px;"

Но вот проблема: этот стиль применяется к обоим QLabels и полностью нарушает компоновку. Мне нужно только внешнее окно для границы, а не метки. Есть идеи?

Заранее спасибо!

Ответы [ 2 ]

7 голосов
/ 25 октября 2011

Используйте

.QWidget
{
    // your css rules
}

.QWidget будет применять CSS только к классам, которые ТОЛЬКО QWidget и не наследуют QWidget

Вы также можете использовать селектор имени объекта

#YourWidgetObjectName
{
    // your css rules
}

Оба решения не будут применять правила к другим виджетам (даже к внутренним)

7 голосов
/ 25 октября 2011

Таблицы стилей будут работать рекурсивно. Если вы примените таблицу стилей к Приложению, она будет применена ко всем виджетам в ней. Так что вам, возможно, придется указать, к чему вы хотите применить таблицу стилей?

логика должна быть примерно такой ...

QHBoxLayout#layoutbox {
     background-color: red;
     border-style: outset;
     border-width: 2px;
     border-radius: 10px;
     border-color: beige;
     font: bold 14px;
     min-width: 10em;
     padding: 6px;
 }
...