Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Фон у наследника


Автор: Sality123 2.4.2012, 13:28
Всем привет. Давно воюю с таким моментом, но всегда обходил другими путями, а вот сейчас решил уже разобратся полностью.

Значит есть у нас QWidget. На него я цепляю QLabel тобиш делаю его наследником виджета. Виджету через стили добавляю фоновый цвет.
И тут начинается самая проблема, у наследника тоже становится этот же фон. Так же у наследника перестают работать все стили кроме цвета текста. 

У лейбла менял и autoFillBacground и делал setAttribute(Qt::WA_StyledBackground);
ничего не помагает, лейбл как держал фон предка, так и держит. Ко всему прочему и стили перестали работать, немогу картинку в него впихнуть.

Автор: borisbn 2.4.2012, 13:53
Попробуй поиграться с http://qt-project.org/doc/qt-4.8/stylesheet-syntax.html#selector-types

Автор: Sality123 2.4.2012, 14:12
Не помогает... тут собака зарыта где то в целенаправленой блокировке стилей кроме цвета текста. Должен быть какойто способ именно отключить наследие стиля у родителя.

Автор: Sality123 2.4.2012, 15:19
Спс borisbn. Вопрос решен с помощью селекторов.

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

Пример кому интересно:
Задача : виджет закрасить красным, а лебл на нем в зеленый. 
Код


QWidget *wd = new QWidget();
wd->setStyleSheet(" .QWidget{background-color:red;} QLabel{background-color:green;} "); 
QLabel  *lb = new QLabel(wd);
lb->show();
wd->show();



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

Автор: mes 2.4.2012, 15:37
Цитата(Sality123 @  2.4.2012,  14:19 Найти цитируемый пост)
применять только к нему без наследников. 

мне кажется Вы путаетесь в понятиях предок/наследник и родитель/ребенок.. В комп. терминологии они обозначают разные взаимотношения сущностей..

Добавлено через 2 минуты и 12 секунд
Цитата(Sality123 @  2.4.2012,  14:19 Найти цитируемый пост)
 а лебл на нем

указание конкретного ребенка производится с помощью селектора >
Код

QWidget > QLabel{.. 

Автор: Sality123 2.4.2012, 15:45
Да термины в кучу смешал))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)