Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Yegor от Октябрь 25, 2012, 20:13



Название: Стили мешают палитре
Отправлено: Yegor от Октябрь 25, 2012, 20:13
Здравствуйте!

Мне нужно в виджет установить фоновую картинку с помощью палитры. А затем применить какой либо стиль с помощью каскадной таблице стилей.

1. Сначала с помощью палитры устанавливаю фоновую картинку.
Код:
QPalette pal1;
pal1.setBrush(QPalette::Base, QBrush(bg_pixmap));
MyWidget->setPalette(pal1);
После этого в виджете виден новый фон.

2. Затем применяю стили.
Код:
MyWidget->setStyleSheet (strMyStyleSheet);
Сразу после этого фон виджета пропадает, меняется на белый.

Вопрос, как сделать чтобы при применении стиля фон остался прежний?

Фоновую картинку мне нужно установить только с помощью палитры а не стилей. Так как изображение берется из базы данных, а не из файла на жестком диске. Поэтому мне нужно использовать как палитру так и стили одновременно.


Название: Re: Стили мешают палитре
Отправлено: Bepec от Октябрь 25, 2012, 20:27
Вы селекторы у CSS нормальные проставили?

Или проще выражаясь - у вас там не задаётся ли пустой/загруженный фон для класса, которым является myWidget? Если да - то у вас наложение и поведение ожидаемое.

Как с этим справиться? Селекторами обойти ваш класс, у которого есть фон.

PS уверен на 80% что сработает, но 20% ... :D


Название: Re: Стили мешают палитре
Отправлено: Yegor от Октябрь 25, 2012, 20:40
Приведите, пожалуйста, кусочек style sheet, в которых селекторы обходят класс. Чтобы не пропадал фон палитры.
Селекторов может и не быть. Даже если я подгружаю полностью пустой CSS - все равно фон сбрасывается.


Название: Re: Стили мешают палитре
Отправлено: xokc от Октябрь 26, 2012, 08:26
Как с этим справиться? Селекторами обойти ваш класс, у которого есть фон.
Он же стиль назначает конкретному объекту, у которого и переопределил палитру. Как он его обойдёт.
На мой взгляд, варианта два - либо фон тоже непосредственно в стилях переопределять, либо - переопределять MyWidget::paintEvent и рисовать фон там.


Название: Re: Стили мешают палитре
Отправлено: Bepec от Октябрь 26, 2012, 10:53
Что мешает выделить объекты с нужным стилем? Неуверен в сработке, смотри PS.

PS скиньте минимально компилируемый пример в архиве. Тогда я посмотрю и попробую.


Название: Re: Стили мешают палитре
Отправлено: lit-uriy от Октябрь 27, 2012, 20:15
Насколько я помню асистент, каскадные таблицы стилей не совместимы со стилями Qt (как следствие с палитрой)


Название: Re: Стили мешают палитре
Отправлено: Bepec от Октябрь 27, 2012, 22:05
Эммм... Ну как то же палитра берёт системные цвета при поставленном styleSheet? Так же спокойно отрисовывает все состояния кнопок/окон, цвета которых опять же берутся из палитры.

В общем надо попробовать. Завтра. С утреца. Посмотрю.

update: Утрооо... Вот на ваш суд - виджет с фоновой палитрой и установленным стайлшитом (установлен в виджете, с использованием селекторов для кнопок). М?

PS ТС(создатель темы.) напиши что тебе надо - я мб тебе даже правильный стайлшит подкину.


Название: Re: Стили мешают палитре
Отправлено: xokc от Октябрь 29, 2012, 19:21
Ему нужно, чтобы на "кнопочку" фон ставился через через палитру, а, например, "border" у этой же кнопочки через stylesheet.


Название: Re: Стили мешают палитре
Отправлено: Bepec от Октябрь 29, 2012, 19:23
Хм. интересная задачка :)
Вроде так нельзя в общем то, но если подумать...

PS вроде где то видел, что CSS может брать цвет из стандартной палитры. Поищу :)