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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Style Sheet background-color из памяти  (Прочитано 8398 раз)
Yegor
Гость
« : Октябрь 20, 2012, 13:07 »

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

Мне нужно с помощью стилей установить для виджета фоновую картинку.
С помощью стилей это делается так:
Код:
background-image: url("MyImage.png");

Здесь берется картинка из файла, который находится на жестком диске.
Вопрос в том, как указать фоновую картинку из памяти. Например из QPixmap. Или из базы данных.
Записан
Hrundel
Гость
« Ответ #1 : Октябрь 20, 2012, 16:12 »

А почему из ресурса не подходит?
Записан
Yegor
Гость
« Ответ #2 : Октябрь 20, 2012, 20:02 »

Из ресурса не подходит, так как заранее неизвестно, какое изображение применить. Изображение подгружается из базы данных.
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



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

Через временный файл на жёстком диске. В чем проблема то? )
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Bepec
Гость
« Ответ #4 : Октябрь 20, 2012, 21:36 »

Кхм. Егор... Мне кажется, что вы делаете что-то не так.

CSS - Каскадная таблица стилей, предназначена для смены стиля на ходу. Любую программу на Qt можно запустить с любым файлом стиля. CSS не предназначен для показа файлов, считанных из базы. Он предназначен для показа с диска.

Совет Kurles в вашем случае будет наилучшим решением, но ОООЧень большим костылём.

PS а показывать значения из базы - ставьте их в коде на нужные элементы, что проще?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #5 : Октябрь 25, 2012, 09:48 »

Можно сделать свою виртуальную файловую систему (QAbstractFileEngine, QAbstractFileEngineHandler). Придумайте себе префикс, к примеру, "internal_pixmaps://", повесьте на него QAbstractFileEngineHandler, и по каким нибудь идентификаторам выдавайте ваши картинки в наследнике от QAbstractFileEngine.

Это, кстати, также единственный способ засунуть свою картинку в рантайме в tooltip.
Записан

Гугль в помощь
Bepec
Гость
« Ответ #6 : Октябрь 25, 2012, 10:34 »

Пипец. 

Navrocky, а засунуть картинку в toolTip html или css или переопределить? никак?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


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

Пипец. 

Navrocky, а засунуть картинку в toolTip html или css или переопределить? никак?
Ну попробуй в html засунуть картинку сгенерённую на лету в памяти. Ты знаешь какие-то магические тэги?
Записан

Гугль в помощь
Bepec
Гость
« Ответ #8 : Октябрь 25, 2012, 12:31 »

Ещё раз -
Можно сделать свою виртуальную файловую систему (QAbstractFileEngine, QAbstractFileEngineHandler). Придумайте себе префикс, к примеру, "internal_pixmaps://", повесьте на него QAbstractFileEngineHandler, и по каким нибудь идентификаторам выдавайте ваши картинки в наследнике от QAbstractFileEngine.

Это, кстати, также единственный способ засунуть свою картинку в рантайме в tooltip.

Найдёте мне тут слово - сгенеренную на лету в памяти, я с вами соглашусь.

PS на лету сохраняем в темповую папку и суёшь в html -> профит.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #9 : Октябрь 25, 2012, 12:41 »

Найдёте мне тут слово - сгенеренную на лету в памяти, я с вами соглашусь.

Первый пост:
Цитировать
Вопрос в том, как указать фоновую картинку из памяти. Например из QPixmap. Или из базы данных.

PS на лету сохраняем в темповую папку и суёшь в html -> профит.
Некрасиво как-то.
Записан

Гугль в помощь
Bepec
Гость
« Ответ #10 : Октябрь 25, 2012, 12:50 »

Моё некрасиво и быстро против вашего красиво, но громоздко.

Хотя у вас более интересное решение. Думаю, что и разница во времени разработки будет существенной.

PS хотя как я уже упомянул - получается некрасивое использование CSS - через опу Улыбающийся
« Последнее редактирование: Октябрь 25, 2012, 12:58 от Bepec » Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #11 : Октябрь 25, 2012, 13:12 »

Это даже не моё решение ) Здесь уже обсуждалось несколько раз.

Вот нашел:
http://www.prog.org.ru/topic_14019_0.html
Записан

Гугль в помощь
Bepec
Гость
« Ответ #12 : Октябрь 25, 2012, 13:26 »

Моим решением этой проблемы был бы наследник от QWidget, с маской прозрачности и своими функциями вставки рисунка. И никаких проблем.

PS хотя в той теме даже Sabrog отметился, но для "другого программиста" данный финт ушами будет неожиданностью Улыбающийся

Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #13 : Октябрь 25, 2012, 13:38 »

Поддержу Вереса.
Вместо того, чтобы спокойно убить воробья в виде динамической отрисовки фона виджета из рогатки в виде наследования от QWidget, переопределения у него paintEvent и добавления свойства background, мы используем сразу две пушки: QSS для отрисовки фона и виртуальную файловую систему (!) для того, чтобы сослаться на картинку. Хорошо хоть без ядерного оружия в виде QML обошлись пока.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Октябрь 25, 2012, 14:05 »

Может надо учесть и такой момент: когда имедж грузится с диска - голова не болит как его освобождать, кто грузил тот и удалит. А если подсовываем свой - тогда неясно как (и когда)

А вообще случай типа "нашла коса на камень" Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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