Название: QStyleSheet и дочерний объект [РЕШЕНО] Отправлено: aliks-os от Май 17, 2012, 16:41 Есть QWidget в котором я устанавливаю некий QStyleSheet.
Создаю диалоговое окно, в качестве родителя использую вышеупомянутый виджет. Соответственно диалоговое окно наследует стиль родителя. Пытался сбросить стиль у диалогового окна след.образом (по материалам нашедшим в инете) Код: this->setStyleSheet("/**/"); Однако никакого положительного результата я не получил. Есть у кого какие идеи по этому поводу? Название: Re: QStyleSheet и дочерний объект Отправлено: ruzik от Май 17, 2012, 20:19 Попробуй поставить какой-либо ненулевой стиль и посмотри подействует ли он.
Название: Re: QStyleSheet и дочерний объект Отправлено: GreatSnake от Май 17, 2012, 20:30 Попробуй поставить какой-либо ненулевой стиль и посмотри подействует ли он. Не подействует, т.к. все установки css работают в режиме слияния.Тут 2 варианта - либо уменьшить действие стиля либо дать диалогу другого родителя. Название: Re: QStyleSheet и дочерний объект Отправлено: Termit от Май 18, 2012, 08:28 Есть у кого какие идеи по этому поводу? В самом qss при указании объекта к которому применяется стиль можно указать не класс (в терминах css) типа ".QWidget" а id типа "#MySuperWidget". Так что прав GreatSnake нужно уменьшать (конкретизировать) действие стиля. Название: Re: QStyleSheet и дочерний объект Отправлено: aliks-os от Май 18, 2012, 08:30 дать диалогу другого родителя. Это помогает, оставил как последний вариант либо уменьшить действие стиля а как это правильно сделать? Код: QString stl = "QWidget {border: 1px solid black;" Вариант меня не устраивает, а вот этот почему то не работает Код: QString stl = "TContainerField {border: 1px solid black;" TContainerField наследник от класса TContainer этот в свою очередь от QWidget Название: Re: QStyleSheet и дочерний объект Отправлено: trot от Май 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-ов.Название: Re: QStyleSheet и дочерний объект Отправлено: aliks-os от Май 18, 2012, 09:58 ну имя объекту я конечно присваиваю...
Все решено! я заблудился в родителях и детях осуществил фильтрацию по классам и все стало на свои места. Всем большое спасибо! |