Russian Qt Forum

Qt => QSS => Тема начата: Rainbow от Март 17, 2011, 18:06



Название: StyleSheet. Градиент и прозрачность.
Отправлено: Rainbow от Март 17, 2011, 18:06
Уважаемые форумчане,
возникла следующая проблема:
есть компонент QWidget
его stylesheet:

QWidget
{
background-image: url(:/background/res/texture01.png);
}
(texture01.png - небольшая текстура 16x16px)

И есть на этом виджете другие компоненты, скажем, еще один QWidget. Его stylesheet к п римеру:

QWidget
{
background-color: rgba(255, 255, 255,100);
}

Проблема! Параметры фона на всех дочерних виджетах игнорируюстя: цвет заливки, прозрачность
Хотя если вместо Color использовать Image, залитую определенным цветом с прозрачностью, то нужный эффект достигается... НО в таком случае при скруглении краев компонентов болучается черти знает что (

Заранее спасибо!

Заметка
Поэксперементировав со скруглением, понял, что проблемы при скруглении виджета возникают когда в качестве фона используется изображение


Название: Re: StyleSheet. Градиент и прозрачность.
Отправлено: Rainbow от Март 17, 2011, 18:51
Нашел решение...

Если кому интересно:
СПОСОБ 1: глупый. Т.к. проблема кроется в наследовании таблиц стилей, в качестве родительского виджета используем, скажем QFrame. А на него можно лепить сколько угодно QWidgetov с заданными CSS
Такое решение меня не устроило, начал копать дальше иии...

СПОСОБ 2: очевидный CSS QWidgeta-родителя оставляем неизменным, а вот фон потомков в CSS указываем не через background-color, а через background. Свойство background имеет высший приоритет над свойствами background-color, background-image и т.д. Поэтому и работает... Ошибка была в том, что указывая у дочернего виджета background-color он в то же время наследовал background-image родителя... и применял, соответсвтенно его в качестве фона...