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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Чудеса с картинками в плагинах  (Прочитано 3876 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Май 12, 2015, 21:56 »

Есть два очень похожих плагина, проекты лежат в соседних каталогах. У плагинов есть разные картинки, которые для простоты и удобства были сделаны одноименными. Плагины грузятся, картинки берутся по их адресам в ресурсах, и рисуются с помощью QPixmap на QGraphicsScene. После сборки плагины находятся в разных DLL с разными именами, у них не совпадают внутри разные функции, но для простоты совпадают имена сегментов интерфейсов плагинов. Впрочем, это на их работе никак не сказывается, кроме одного - у обоих плагинов на сцене оказывается одна и та же картинка, хотя везде очевидно, что подшиваются разные. Отрисовка производится внутри плагина, конкретно в его paint, а каринтка извлекается из ресурса в конструктора основного класса самого плагина. То есть доступ снаружи плагина к ресурсам плагина не осуществляется, только внутри него самого.

Стоит переименовать картинку либо её префикс в ресурсе - всё нормально начинает работать, у каждого плагина появляется своя картинка.

Это чего получается - при загрузке плагинов соответствующий движок собирает из них графические ресурсы, и коммунизирует их? То есть, можно в одном плагине обратиться к графическим ресурсам другого, если известен маршрут? Что-то не помню в описаниях такой возможности, считал, что ресурсы локальны для плагина (как и для исполнимого приложения).
« Последнее редактирование: Май 12, 2015, 22:00 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Май 12, 2015, 22:08 »

Да, ресурсы локальны для каждого процесса. Но все плагины загружаются в одно адресное пространство процесса, поэтому они доступны друг другу.
Записан
fdfsdfgjfh
Гость
« Ответ #2 : Май 14, 2015, 20:42 »

Данная проблема и у меня.
в windows icon отображается
в linux icon не отображается.

пробовал явно указать префикс но не получилось.
плагин не видит свои ресурсы Грустный но видит ресурсы приложения
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #3 : Май 14, 2015, 23:13 »

Если префиксы разные, то должно и в Linux без проблем работать. Я ещё своё приложение для него не собирал.

Я сделал так, чтобы файлы .qrc генерилсь при создании Makefile проекта, с помощью qmake. И в качестве префикса используется целевое имя сборки, для разных подпроектов они разные. Но у меня там где есть проблема, файлы ресурсов небольшие. Подробнее здесь.
Записан

2^7-1 == 127, задумайтесь...
fdfsdfgjfh
Гость
« Ответ #4 : Май 17, 2015, 15:04 »

Разобрался

ошибка была в названии qrc файла и префикса.

Так что следите за корректностью названий ресурсов
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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