Russian Qt Forum
Июнь 22, 2024, 19:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать чтобы дочерные виджеты не нстледовали стиль родителя?  (Прочитано 10012 раз)
Caduceus
Гость
« : Апрель 15, 2009, 21:25 »

Сделал виджет-панель с градиентынм фоном - все кнопки что на нем - тоже стали с таким фоном - это я так понимаю они стиль унаследовали. Как вернуть обратно им стиль всего приложения?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Апрель 15, 2009, 21:27 »

>>Сделал виджет-панель с градиентынм фоном
А стиль чем задёшь, таблицей стилей или нет?
Записан

Юра.
Caduceus
Гость
« Ответ #2 : Апрель 15, 2009, 21:29 »

В дизайнере в строке style Sheet
Записан
SimpleSunny
Гость
« Ответ #3 : Апрель 15, 2009, 21:36 »

For example, the following style sheet specifies that all QLineEdits should use yellow as their background color, and all QCheckBoxes should use red as the text color:

QLineEdit { background: yellow }
QCheckBox { color: red }
Записан
Caduceus
Гость
« Ответ #4 : Апрель 15, 2009, 21:42 »

И чё?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Апрель 15, 2009, 21:46 »

2 Caduceus, тебе надо будет указвать более полную запись:
QWidget#Form {background-color: rgb(29, 63, 255);}
где "Form" имя экзепляра интерисующего тебя класса (см. тут)
« Последнее редактирование: Апрель 15, 2009, 21:48 от lit-uriy » Записан

Юра.
Caduceus
Гость
« Ответ #6 : Апрель 15, 2009, 21:54 »

В дизайнере через EditStyleSheet само прописалось так:
background-color: qlineargradient(spread:reflect, x1:0.5, y1:0.0170455, x2:0.517, y2:0.5, stop:0 rgba(203, 197, 191, 255), stop:1 rgba(230, 226, 221, 255));

Для дочерних элементов поле в EditStyleShhet пустое

Можно ли как-то через дизайнер отменить распространение стиля на дочерние элементы? Без программинга
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Апрель 15, 2009, 21:55 »

я тебе пример привел. забей его в окошко настройки стиля того виджета который должен иметь особый стиль и посмотри.
Записан

Юра.
Caduceus
Гость
« Ответ #8 : Апрель 15, 2009, 21:58 »

Сделал так:
widget#Dialog {background-color: qlineargradient(spread:reflect, x1:0.5, y1:0.0170455, x2:0.517, y2:0.5, stop:0 rgba(203, 197, 191, 255), stop:1 rgba(230, 226, 221, 255))};

Где widget - это имя виджета с градиентом, а Dialog - имя диалога с этим виджетом

Градиент у виджета пропал
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #9 : Апрель 15, 2009, 22:09 »

Записи:
QWidget#Form и widget#Dialog
разве ничем принципиально не отличаются?

Помоему очевидно, что в начале идет имя класса, а затем, как я уже говорил, имя виджета.

Записан

Юра.
Caduceus
Гость
« Ответ #10 : Апрель 15, 2009, 22:15 »

дааа, поправил. Лучше, но как-то не так
Кнопки не такие. Справа во вложении - какие должны быть
Стиль сейчас на детей не распространяется, но дети не такие, какие были бы, если б не лежали на этом виджете:
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #11 : Апрель 15, 2009, 22:20 »

Вот у меня тестовый пример, просто создана форма "Form" (экземпляр QWidget), на нее брошена кнопка.
Затем установлен стиль для формы.
Записан

Юра.
Caduceus
Гость
« Ответ #12 : Апрель 15, 2009, 22:22 »

А запусти превью в разных стилях - кнопка будет как надо - в стиле выбранного превью?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #13 : Апрель 15, 2009, 22:44 »

Вот, в том порядке (слева-направо, сверху-вниз), в котором стили в менюхе идут
UI
Код:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>320</width>
    <height>240</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <property name="styleSheet">
   <string>QWidget#Form {background-color: rgb(29, 63, 255);}</string>
  </property>
  <widget class="QPushButton" name="pushButton">
   <property name="geometry">
    <rect>
     <x>110</x>
     <y>110</y>
     <width>75</width>
     <height>24</height>
    </rect>
   </property>
   <property name="text">
    <string>PushButton</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>
« Последнее редактирование: Апрель 15, 2009, 22:46 от lit-uriy » Записан

Юра.
Caduceus
Гость
« Ответ #14 : Апрель 15, 2009, 22:50 »

Хмм, ну у меня все по типу. В превью кнопки не такие как надо.

Ладно, спасибо, буду копать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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