Russian Qt Forum

Qt => Общие вопросы => Тема начата: manarch от Февраль 02, 2009, 09:49



Название: Проблема с иконками в плагине
Отправлено: manarch от Февраль 02, 2009, 09:49
Подскажите если кто знает как исправить!
Создал плагин который создает свои элементы GUI (меню, тулбар и т.д). Все работает, кроме иконок.
Вроде делаю все как надо. Инициализирую Q_INIT_RESOURCE'ом, включаю в pro модуля qrc файл.
QPixmap(QString::fromUtf8(":/icon.png")) возвращает false и соответственно иконки нету.


Название: Re: Проблема с иконками в плагине
Отправлено: Admin от Февраль 02, 2009, 10:21
а версия qt не статическая?


Название: Re: Проблема с иконками в плагине
Отправлено: manarch от Февраль 02, 2009, 10:56
динамическая. а какая разница?  в основной программе все иконки в норме.


Название: Re: Проблема с иконками в плагине
Отправлено: lit-uriy от Февраль 02, 2009, 13:45
в статике просто есть бага с картинками

у тебя путь точно правильный к иконке? может у тебя в файле ресурсов префикс какой-нибудь есть7


Название: Re: Проблема с иконками в плагине
Отправлено: BaltikS от Февраль 02, 2009, 14:22
Я собирал плагин с иконками в ресурсе в студии 2005, было всё норме...


Название: Re: Проблема с иконками в плагине
Отправлено: manarch от Февраль 02, 2009, 14:47
Цитировать
Я собирал плагин с иконками в ресурсе в студии 2005, было всё норме...

а ты для плагина использует теже иконки что и для основной?


Название: Re: Проблема с иконками в плагине
Отправлено: BaltikS от Февраль 02, 2009, 20:55
Значит так, у меня проект на студии лежит в какой то папке. Все файлы ui, cpp(кроме main конечно же :)), h, qrc переношу в папку с плагином, где лежит интерфейс. Да, и не забываем папку Resource (в ней по умалчанию сохраняются ресурсы). В pro-файл дописываем скопированные FORMS, SOURCE, HEADERS и RESOURCES и всё...как обычно, qmake и nmake... По-моему всё как обычно :)....
Да советую проверить соответствие файлов в каталоге и в файле qrc...точнее их пути


Название: Re: Проблема с иконками в плагине
Отправлено: manarch от Февраль 03, 2009, 09:04
Блин... я уже все 10 раз проверил... толку никакого... Плагин просто отказывается загружать png в QPixmap и все.
Есть подозрение что это как-то связанно с инициализацией ресурсов приложения. Попятка заргузить иконку с основное программы тож не увенчалась успехом. Счас вот сижу компилю статическую версию чтобы пройтись по всему коду заргузки иконки. В динамической это не получилось.


Название: Re: Проблема с иконками в плагине
Отправлено: BRE от Февраль 03, 2009, 09:18
А Q_INIT_RESOURCE вызываешь?

Упс. Перечитал первый пост и вопрос отпал...  ;D


Название: Re: Проблема с иконками в плагине
Отправлено: BaltikS от Февраль 03, 2009, 09:54
А Q_INIT_RESOURCE вызываешь?
у меня и без такого вызова работает...


Название: Re: Проблема с иконками в плагине
Отправлено: BRE от Февраль 03, 2009, 10:10
у меня и без такого вызова работает...
Нигде в проекте ты его не вызываешь? Даже из main() убрал?


Название: Re: Проблема с иконками в плагине
Отправлено: BaltikS от Февраль 03, 2009, 10:27
Нет, а зачем? Если он у меня в pro - файле прописан? Или чего-то я не понимаю? Но я просмотрел некоторые примеры, там сделано аналогично. А главное всё работает!
З.Ы. МС2005 + Qt4.3.5 + интегратор


Название: Re: Проблема с иконками в плагине
Отправлено: BRE от Февраль 03, 2009, 11:30
Нет, а зачем?
Прости, но я так и не понял, в main он есть или нет?  :)


Название: Re: Проблема с иконками в плагине
Отправлено: BRE от Февраль 03, 2009, 11:49
QPixmap(QString::fromUtf8(":/icon.png")) возвращает false и соответственно иконки нету.
А попробуй без fromUtf8?


Название: Re: Проблема с иконками в плагине
Отправлено: BaltikS от Февраль 03, 2009, 11:52
Прости, но я так и не понял, в main он есть или нет?  :)
Нет


Название: Re: Проблема с иконками в плагине
Отправлено: manarch от Февраль 03, 2009, 15:26
Все...  проблему решил.
Все оказалась как все гениальное просто. В файле ресурсов .qrc все ресурсы хранятся в сл. виде:
Код:
<RCC>
  <qresource>
    <file>fileopen.png</file>
  </qresource>
</RCC>

Для загрузки иконки использовалась команда
Код:
    QIcon icon1;
    icon1.addPixmap(QPixmap(QString::fromUtf8(":/fileopen.png")), QIcon::Normal, QIcon::Off);

И во всех проектах я так и делал и все было хорошо и работало. а вот в плагине нет. Но черт меня дернул в дизайнере имя группе иконок и файл получился:
Код:
<RCC>
  <qresource prefix="icons">
    <file>fileopen.png</file>
  </qresource>
</RCC>
И дальше тот же черт навел на мысль переписать загрузку в виде:
Код:
    QIcon icon1;
    icon1.addPixmap(QPixmap(QString::fromUtf8(":/icons/fileopen.png")), QIcon::Normal, QIcon::Off);

и все заработало ВКЛЮЧАЯ ПЛАГИН так как будто ничего и небыло. Вот теперь весь проект правлю. 
Так что всем спасибо за помощь. Надесь что я один такой кто про это не знал. :)


Название: Re: Проблема с иконками в плагине
Отправлено: Rcus от Февраль 03, 2009, 15:33
никогда руками не набирал qrc файлы, а редакторы ресурсов не позволяли вставлять ресурс без префикса :)


Название: Re: Проблема с иконками в плагине
Отправлено: manarch от Февраль 04, 2009, 06:47
Цитировать
никогда руками не набирал qrc файлы, а редакторы ресурсов не позволяли вставлять ресурс без префикса
Так я тоже набирал в редакторе. Незнаю каким ты редактором пользовался, но в 4.4.0 редактор позволяет не вводить имена групп. При этом он вообще не ставит каких либо условий как по количеству групп, так и по уникальности их имен.


Название: Re: Проблема с иконками в плагине
Отправлено: Rcus от Февраль 04, 2009, 07:27
/*shrugs*/
Не знаю, например в Qt Creator после создания нового файла ресурсов в меню Add действие Add File неактивно, можно только добавить префикс :) (а раньше я пользовался редактором в составе интеграции Eclipse и Qt )