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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Стили мешают палитре  (Прочитано 4533 раз)
Yegor
Гость
« : Октябрь 25, 2012, 20:13 »

Здравствуйте!

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

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

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

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

Фоновую картинку мне нужно установить только с помощью палитры а не стилей. Так как изображение берется из базы данных, а не из файла на жестком диске. Поэтому мне нужно использовать как палитру так и стили одновременно.
Записан
Bepec
Гость
« Ответ #1 : Октябрь 25, 2012, 20:27 »

Вы селекторы у CSS нормальные проставили?

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

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

PS уверен на 80% что сработает, но 20% ... Веселый
Записан
Yegor
Гость
« Ответ #2 : Октябрь 25, 2012, 20:40 »

Приведите, пожалуйста, кусочек style sheet, в которых селекторы обходят класс. Чтобы не пропадал фон палитры.
Селекторов может и не быть. Даже если я подгружаю полностью пустой CSS - все равно фон сбрасывается.
« Последнее редактирование: Октябрь 25, 2012, 20:56 от Yegor » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #3 : Октябрь 26, 2012, 08:26 »

Как с этим справиться? Селекторами обойти ваш класс, у которого есть фон.
Он же стиль назначает конкретному объекту, у которого и переопределил палитру. Как он его обойдёт.
На мой взгляд, варианта два - либо фон тоже непосредственно в стилях переопределять, либо - переопределять MyWidget::paintEvent и рисовать фон там.
Записан
Bepec
Гость
« Ответ #4 : Октябрь 26, 2012, 10:53 »

Что мешает выделить объекты с нужным стилем? Неуверен в сработке, смотри PS.

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Октябрь 27, 2012, 20:15 »

Насколько я помню асистент, каскадные таблицы стилей не совместимы со стилями Qt (как следствие с палитрой)
Записан

Юра.
Bepec
Гость
« Ответ #6 : Октябрь 27, 2012, 22:05 »

Эммм... Ну как то же палитра берёт системные цвета при поставленном styleSheet? Так же спокойно отрисовывает все состояния кнопок/окон, цвета которых опять же берутся из палитры.

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

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

PS ТС(создатель темы.) напиши что тебе надо - я мб тебе даже правильный стайлшит подкину.
« Последнее редактирование: Октябрь 28, 2012, 11:28 от Bepec » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #7 : Октябрь 29, 2012, 19:21 »

Ему нужно, чтобы на "кнопочку" фон ставился через через палитру, а, например, "border" у этой же кнопочки через stylesheet.
Записан
Bepec
Гость
« Ответ #8 : Октябрь 29, 2012, 19:23 »

Хм. интересная задачка Улыбающийся
Вроде так нельзя в общем то, но если подумать...

PS вроде где то видел, что CSS может брать цвет из стандартной палитры. Поищу Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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