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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QStyleSheet и дочерний объект [РЕШЕНО]  (Прочитано 6290 раз)
aliks-os
Гость
« : Май 17, 2012, 16:41 »

Есть QWidget в котором я устанавливаю некий QStyleSheet.
Создаю диалоговое окно, в качестве родителя использую вышеупомянутый виджет.
Соответственно диалоговое окно наследует стиль родителя.
Пытался сбросить стиль у диалогового окна след.образом (по материалам нашедшим в инете)
Код:
this->setStyleSheet("/**/");
this->setStyleSheet("");
this->setStyleSheet(styleSheet());

Однако никакого положительного результата я не получил.
Есть у кого какие идеи по этому поводу?
« Последнее редактирование: Май 18, 2012, 09:58 от aliks-os » Записан
ruzik
Гость
« Ответ #1 : Май 17, 2012, 20:19 »

Попробуй поставить какой-либо ненулевой стиль и посмотри подействует ли он.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Май 17, 2012, 20:30 »

Попробуй поставить какой-либо ненулевой стиль и посмотри подействует ли он.
Не подействует, т.к. все установки css работают в режиме слияния.
Тут 2 варианта - либо уменьшить действие стиля либо дать диалогу другого  родителя.
Записан

Qt 5.11/4.8.7 (X11/Win)
Termit
Самовар
**
Offline Offline

Сообщений: 144



Просмотр профиля WWW
« Ответ #3 : Май 18, 2012, 08:28 »

Есть у кого какие идеи по этому поводу?

В самом qss при указании объекта к которому применяется стиль можно указать не класс (в терминах css) типа ".QWidget" а id типа "#MySuperWidget".

Так что прав GreatSnake нужно уменьшать (конкретизировать) действие стиля.
Записан

Человеческая глупость дает представление о бесконечности
(с) Иоанна Хмелевская
aliks-os
Гость
« Ответ #4 : Май 18, 2012, 08:30 »

дать диалогу другого  родителя.

Это помогает, оставил как последний вариант

либо уменьшить действие стиля

а как это правильно сделать?

Код:
QString stl = "QWidget {border: 1px solid black;"
                                  "border-top-color: white;"
                                  "border-left-color: white;"
                                  "border-right-color: white;"
                                  "border-bottom-color: white;}";

Вариант меня не устраивает, а вот этот почему то не работает


Код:
QString stl = "TContainerField {border: 1px solid black;"
                                  "border-top-color: white;"
                                  "border-left-color: white;"
                                  "border-right-color: white;"
                                  "border-bottom-color: white;}";

TContainerField наследник от класса TContainer этот в свою очередь от QWidget
« Последнее редактирование: Май 18, 2012, 08:43 от aliks-os » Записан
trot
Гость
« Ответ #5 : Май 18, 2012, 09:35 »

Надо сначало дать имя объекту через setObjectName и только после этого можно задавать конкретный стиль для этого объекта, указывая имя объекта вначале которого ставим #. Например

myWidget->setObjectName("myWidget");

QString stl = "#myWidget {border: 1px solid black;"
                                  "border-top-color: white;"
                                  "border-left-color: white;"
                                  "border-right-color: white;"
                                  "border-bottom-color: white;}";


Цитировать
все установки css работают в режиме слияния.
Это работает не всегда. Например, когда я указал для QSpinBox бордюр красный, то отменились все стили для subcontrol-ов, и в таких случаях (может быть и не вовсех), как я понимаю, если у объекта есть subcontrol-ы и ты хочешь поменять какой-то стиль у объекта, то это потребует полное переопределение стилей для всех его subcontrol-ов.



Записан
aliks-os
Гость
« Ответ #6 : Май 18, 2012, 09:58 »

ну имя объекту я конечно присваиваю...

Все решено! я заблудился в родителях и детях
осуществил фильтрацию по классам и все стало на свои места.

Всем большое спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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