Russian Qt Forum
Ноябрь 23, 2024, 08:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с styleSheet  (Прочитано 5869 раз)
registrationfedser87
Гость
« : Февраль 20, 2009, 08:50 »

Есть класс наследник от QFrame. На нём располагаются другие виджеты(QLabel и т.д.). Я хочу установить градиентный фон родительского виджета (т.е. QFrame), но только у родительского,чтобы у других он остался чтобы у других он остался прежним. Для этого к родительскому виджету применяю стиль:
Код
C++ (Qt)
this->setStyleSheet(".QFrame{background-color: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 1, stop: 0 rgb(198, 236, 253), stop: 1.0 rgb(255,255,255));}");
т.е. этим стилем я указываю чтобы он применялся только к виджетам типа QFrame. Но в итоге он не применяется. Хотя если в Qt Designer применить к родительскому виджету стиль он работает как надо,но при добавлении форму в класс оне не работает.
Так же этот код работает если я буду создавать виджет вручную где то в программе и потом применять к нему стиль,но мне нужно чтобы стиль применялся внутри конструктора или хотя при наследовнии от формы.
Записан
Rcus
Гость
« Ответ #1 : Февраль 20, 2009, 09:06 »

http://doc.trolltech.com/4.4/stylesheet-syntax.html#selector-types
Цитировать
Type Selector   QPushButton   Matches instances of QPushButton and of its subclasses.
..
Class Selector   .QPushButton   Matches instances of QPushButton, but not of its subclasses.
This is equivalent to *[class~="QPushButton"].
/*yawn*/
Записан
registrationfedser87
Гость
« Ответ #2 : Февраль 20, 2009, 09:11 »

как я понял,точка перед названием класса указывает что стиль нужно применять только непосредственно к виджетам этого класса(в моём случае QFrame), но не к наследникам,то есть если QLabel наследуется от QFrame,то к нему всё равно не будет применятся стиль если указать точку,но у меня так и указано:
Код
C++ (Qt)
this->setStyleSheet(".QFrame{background-color: qlineargradient(x1: 1, y1: 0, x2: 0, y2: 1, stop: 0 rgb(198, 236, 253), stop: 1.0 rgb(255,255,255));}");
Записан
Rcus
Гость
« Ответ #3 : Февраль 20, 2009, 09:38 »

Цитировать
Есть класс наследник от QFrame. На нём располагаются другие виджеты(QLabel и т.д.).

хм?
Записан
registrationfedser87
Гость
« Ответ #4 : Февраль 20, 2009, 09:48 »

Спасибо,помогло! И в самом деле-я не учёл что мой класс уже не типа QFrame и к нему уже стиль не применяется
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.159 секунд. Запросов: 21.