crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> отображение иконок в Windows 7 и Windows XP, проблема с отббражением в XP
Physicist
  опции профиля:
сообщение 4.5.2010, 20:25
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.5.2010
Пользователь №: 1688

Спасибо сказали: 1 раз(а)




Репутация:   0  


Доброго времени суток!

Столкнулся с проблемой: не отображаются иконки (на кнопочках, в шапке окна и т.д...) при запуске в Windows XP.
Изначально проект компилировался в VS2008 под Windows 7 x64.
Иконки храню как ресурсы. Под семеркой все отлично отображается, запуская из любой папки...

Вообщем создал простой проект: QMainWindow в который помещен QLabel.
У QMainWindow иконку устанавливаю из ресурсов, а у QLabel pixmap устанавливаю из внешнего файла (ico). После того как откомпилил (по Windows 7) все нормально отображается. Затем скопировал исполняемый модуль, необходимые dll и файл с иконкой в отдельную папку...
И снова все работает прекрасно!

Далее, копирую эту самую папку в голую Windows XP... запускаю... в итоге - иконки не отображаются!!! :huh:
(Пробывал и под Windows XP x64 и под Windows XP x86)

В чем дело никак не пойму... Сам раньше работал с Qt3 и с подобными проблемами не сталкивался...

Вот код test.ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>testClass</class>
<widget class="QMainWindow" name="testClass">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>558</width>
    <height>583</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>test</string>
  </property>
  <property name="windowIcon">
   <iconset resource="test.qrc">
    <normaloff>:/test/Resources/titleicon.ico</normaloff>:/test/Resources/titleicon.ico</iconset>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="0">
     <widget class="QLabel" name="label">
      <property name="text">
       <string/>
      </property>
      <property name="pixmap">
       <pixmap>labelicon.ico</pixmap>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>558</width>
     <height>21</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
  <include location="test.qrc"/>
</resources>
<connections/>
</ui>


test.qrc:
<RCC>
  <qresource prefix="test">
    <file>Resources/titleicon.ico</file>
  </qresource>
</RCC>


содержимое папки для запуска в Windows XP:

  • test_portable
    • Microsoft.VC90.DebugCRT
      • Microsoft.VC90.DebugCRT.manifest
      • msvcm90d.dll
      • msvcp90d.dll
      • msvcr90d.dll
    • labelicon.ico
    • QtCored4.dll
    • QtGuid4.dll
    • test.exe.intermediate.manifest
    • test.exe



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

Прилагаю проект под VS2008 и ту самую папку "portable" версии для windows XP:

проект под VS 2008

содержимое папки для запуска под windowsXP

Заранее огромное спасибо за помощь!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.5.2010, 22:52
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Physicist @ 5.5.2010, 0:25) *
необходимые dll
а подключаемые модули (plugins) Qt, для форматов изображений не взял?
(смотри Развертывание приложений Qt в MS Windows)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Physicist
  опции профиля:
сообщение 5.5.2010, 0:03
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.5.2010
Пользователь №: 1688

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 4.5.2010, 23:52) *
Цитата(Physicist @ 5.5.2010, 0:25) *
необходимые dll
а подключаемые модули (plugins) Qt, для форматов изображений не взял?
(смотри Развертывание приложений Qt в MS Windows)


да, действительно, лоханулся...
Скопировал папку imageformats в каталог, где лежит исполняемый модуль. Но почему-то Не появились картинки в прилодении (((
В реестре появилась строчка:
HKEY_CURRENT_USER\Software\Trolltech\OrganizationDefaults\Qt Plugin Cache 4.6.debug\C:\inbox2\test\imageformats
в котором куча ключей, в том числе:
qicod4.dll со значением:
40602
1
Windows msvc debug full-config
2010-02-10T19:46:32

Т.е. как я понимаю, Qt находит этот плагин... но почему-то не цепляет его (((
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Physicist
  опции профиля:
сообщение 5.5.2010, 19:18
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.5.2010
Пользователь №: 1688

Спасибо сказали: 1 раз(а)




Репутация:   0  


сегодня запустил на машине, на которой установлена VS2008 и нет Qt..
Все прекрасно отобразилось!

мне кажется здесь что-то со связкой: plugins - mcvs runtime libs
может я не те либы цепляю? (хотя exe ж запускается.. :unsure: )

Да, еще: я попробывал такой вариант: скопировал всю папку Qt как было на машине Windows 7 - в таком же виде на win XP и указал путь в переменной Path. Убрал Qt-библиотеки из каталога с exe-файлом, и запустил прогу... На что вылезла непонятная ошибка ... что-то там по адресу... (не помню точно, если важно - воспроизведу еще раз)
Мистика...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.5.2010, 19:39
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Physicist @ 5.5.2010, 23:18) *
скопировал всю папку Qt как было на машине Windows 7
если пути не совпадают, то это бессмысленно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Physicist
  опции профиля:
сообщение 5.5.2010, 20:39
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.5.2010
Пользователь №: 1688

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 5.5.2010, 20:39) *
Цитата(Physicist @ 5.5.2010, 23:18) *
скопировал всю папку Qt как было на машине Windows 7
если пути не совпадают, то это бессмысленно.


дык пути именно совпадают: и там и тут: C:\Qt\4.6.2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Physicist
  опции профиля:
сообщение 6.5.2010, 9:53
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.5.2010
Пользователь №: 1688

Спасибо сказали: 1 раз(а)




Репутация:   0  


наткнулся на статью: http://doc.crossplatform.ru/qt/4.3.2/deployment-windows.html

Согласно ей:
Цитата
Для связывания библиотек времени выполнения с вашим приложением скопируйте каталог
<Visual Studio Install Path>\VC\redist\<Architecture>\Microsoft.VC80.CRT

в каталог с вашим исполняемым файлом, так что вы включили каталог Microsoft.VC80.CRT поблизости от исполняемого файла вашего приложения. Если связали библиотеки времени выполнения и к том уже нужно развернуть подключаемые модули, то из подключаемых модулей вам нужно удалить манифест (встроенный как ресурс) добавив это в pro-файл подключаемых модулей, которые вы компилируете:
CONFIG-=embed_manifest_dll

Если этого не сделать подключаемые модули нельзя будет загрузить на некоторых системах.


Одно не пойму, получается в данном случае мне нужно пересобрать плагины imageformats заново, прописав в их pro-файлах строчку
CONFIG-=embed_manifest_ddll ?

И вообще это мой случай?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.5.2010, 10:49
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Physicist @ 6.5.2010, 13:53) *
пересобрать плагины imageformats заново
здесь идёт речь о собственных плагинах. Иначеб никто не взялся бы использовать Qt со Студийным компилером, слишком много ручной работы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Physicist
  опции профиля:
сообщение 7.5.2010, 2:43
Сообщение #9


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.5.2010
Пользователь №: 1688

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 6.5.2010, 11:49) *
Цитата(Physicist @ 6.5.2010, 13:53) *
пересобрать плагины imageformats заново
здесь идёт речь о собственных плагинах. Иначеб никто не взялся бы использовать Qt со Студийным компилером, слишком много ручной работы


ну.. Qt3.3.3 ж приходилось целиком компилить... ниче, терпимо )

проблему решил:
пересобрал плагин для иконок, добавив в pro-файл строчку:
CONFIG-=embed_manifest_dll. После этого сформировал папку как описал в предыдущих постах

Осталось теперь понять, что за зверь этот такой (в чем его суть) - манифест =)
А так.. заработало! )

Как и описывалось в том документе, если тащить в локальный каталог CRT либы, то надо пересобрать плагин (все же получается что тут имелся ввиду в том числе и плагин qt), а вот второй способ - установка VS 2008 redist у меня так и не проканал...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Physicist
  опции профиля:
сообщение 7.5.2010, 23:52
Сообщение #10


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.5.2010
Пользователь №: 1688

Спасибо сказали: 1 раз(а)




Репутация:   0  


Получилось и с VS2008 redist.
release версия проканала! )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 18:51