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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Неполное функционирование программы на другом компьютере  (Прочитано 10778 раз)
KyberProtagonistes
Гость
« : Сентябрь 08, 2009, 16:38 »

Написал мини-игру. На моём компе работает на ура. Пробовал на других - какая-то ерунда. Игра запускается, но без сплеш-скрина. Потом когда, собственно, время игре начаться, в TLabel'e не появляются картинки. Картинки для тлейбла и для сплешскрина лежат в папке с экзешником и открываются методом      
Код:
QPixmap pixmap("splash.jpg");     
QSplashScreen splash(pixmap);    
splash.show();
и
Код:
label->setPixmap(QPixmap("img1.jpg"));
  (может, я как-то не так загружаю их?). Дллы все нужные скопировал тоже в папку с игрой (собственно, я все 500МБ дллов скопировал на всякий случай). В чём может быть проблема? У меня пока единственная догадка: моя ось - виста, а ось, где запускал - ХРюша. Может, какая-то несоместимость на уровне ОС? Ну, или я как-то неправильно загружаю картинки. Пока у меня других вариантов нет. Подскажите, плиз.
« Последнее редактирование: Сентябрь 08, 2009, 16:40 от KyberProtagonistes » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Сентябрь 08, 2009, 16:52 »

У тебя в папке с софтиной есть папка imageformats ?
Записан
KyberProtagonistes
Гость
« Ответ #2 : Сентябрь 08, 2009, 16:54 »

Так. Есть папки
bin\
build\
src\
ui\

В папке бин лежат екзешник, дллы, которые я туда скинул, и картинки. Папки imageformats, вроде, нигде нет.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #3 : Сентябрь 08, 2009, 17:21 »

Создай в bin папку imageformats и скопируй туда все dll из %QTDIR%\plugins\imageformats
Записан
KyberProtagonistes
Гость
« Ответ #4 : Сентябрь 08, 2009, 17:26 »

А вот это нужно будет в код добавлять: qApp->addLibraryPath("C:\\QtPlugins"); ??
Записан
whirlwind
Гость
« Ответ #5 : Сентябрь 08, 2009, 17:56 »

просто на всякий случай, я бы писал вроде
Код:
QPixmap pixmap(QCoreApplication::applicationDirPath() + QDir::separator() + "splash.jpg");
чтобы точно быть уверенным, что проблемы с путями нет
Записан
spectre71
Гость
« Ответ #6 : Сентябрь 08, 2009, 17:56 »

Изучи Qt ресурсы(qrc), если объемы ресурсов не слишком большие(1, 2, 3.. MB), то лучше пользоваться qrc!
В некоторых случаях, - для библиотек, удобно всталять images непосредственно в код в виде char*[] массивов в XPM формате(смотри QPixmap ( const char * const[] xpm ))
Пример:
Код
C++ (Qt)
static char *XpmButtonBrowse[]={
"14 12 2 1",
". c None",
"# c #4c4cba",
"..............",
"..............",
"..............",
"..............",
"..............",
"..##..##..##..",
"..##..##..##..",
"..............",
"..............",
"..............",
"..............",
".............."};
///
///
QPixmap PixmapBrowse (XpmButtonBrowse);
« Последнее редактирование: Сентябрь 08, 2009, 18:16 от Spectre » Записан
KyberProtagonistes
Гость
« Ответ #7 : Сентябрь 08, 2009, 18:48 »

просто на всякий случай, я бы писал вроде
Код:
QPixmap pixmap(QCoreApplication::applicationDirPath() + QDir::separator() + "splash.jpg");
чтобы точно быть уверенным, что проблемы с путями нет
Попробую, спасибо.

Изучи Qt ресурсы(qrc), если объемы ресурсов не слишком большие(1, 2, 3.. MB), то лучше пользоваться qrc!
В некоторых случаях, - для библиотек, удобно всталять images непосредственно в код в виде char*[] массивов в XPM формате(смотри QPixmap ( const char * const[] xpm ))
Пример:
Код
C++ (Qt)
static char *XpmButtonBrowse[]={
"14 12 2 1",
". c None",
"# c #4c4cba",
"..............",
"..............",
"..............",
"..............",
"..............",
"..##..##..##..",
"..##..##..##..",
"..............",
"..............",
"..............",
"..............",
".............."};
///
///
QPixmap PixmapBrowse (XpmButtonBrowse);
Не, это сильно жестоко =) У меня 3 кратинки 100*150 и одна вообще большая.
Записан
spectre71
Гость
« Ответ #8 : Сентябрь 08, 2009, 19:19 »

Не, это сильно жестоко =) У меня 3 кратинки 100*150 и ...

3*100*150*4 =~ 176 KB  -  маловатенько будет Улыбающийся (я писал про несколько MB)

одна вообще большая.
Это сколько?
Записан
KyberProtagonistes
Гость
« Ответ #9 : Сентябрь 08, 2009, 19:22 »

Большая - 800*600, по-моему. Хотя, я уже понял, для вас она небольшая =)

Кажется, мне помогло добавление папки imagesformats со всеми её плагинами - у знакомого на ХР благополучно запустилась игра со сплешем и всеми картинками.

Всем спасибо!
Записан
spectre71
Гость
« Ответ #10 : Сентябрь 08, 2009, 19:41 »

Большая - 800*600, по-моему. Хотя, я уже понял, для вас она небольшая =)

Кажется, мне помогло добавление папки imagesformats со всеми её плагинами - у знакомого на ХР благополучно запустилась игра со сплешем и всеми картинками.

Всем спасибо!
Изучи QRC! Поможет!
1) Они в исполняемом файле, который "мэпируется" системой => доступ к данным ресурсам максимально быстрый.
2) Чтение ресурсов из файлов черевато глюками(ошибки, тормоза - занятость файловой системы(проблема Windows), итд.)
К примеру, у меня в пректе > 100 катинок, и ни одной не подгружается непосредственно из файла. При этом, ~90 в ресурсах и остальное в коде в виде XPM(для моих библиотечных классов)

Кстати, твоя проблема могла быть из-за "jpg", лучше использовать "png"
« Последнее редактирование: Сентябрь 08, 2009, 19:45 от Spectre » Записан
cya-st
Гость
« Ответ #11 : Сентябрь 08, 2009, 22:13 »

Еще можно проверить какие библиотеки слинкованы с вашим прилжоением с помощью инструмента http://www.dependencywalker.com/. Все что вам нужно - это запустить его примерно так:

  depends <исполняемый файл приложения>

Это предоставит список библиотек, от которых зависит ваше приложение, и другую информацию.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Сентябрь 08, 2009, 23:21 »

В Асистенте по развёртыванию приложения написано, в форуме много написано. И всё равно один и тотже вопрос задаётся.
См. Вики
Записан

Юра.
shadone
Гость
« Ответ #13 : Сентябрь 09, 2009, 14:36 »

поддержка формата Jpeg в Qt реализауется с помощью плагина - вам нужно в директории с исполняемым файлом сделать структуру папок plugins/imageformats/ и положить туда плагин, потом с помощью qt.conf указать путь до плагина (установив "Prefix=.").
Записан
BRE
Гость
« Ответ #14 : Сентябрь 09, 2009, 14:43 »

поддержка формата Jpeg в Qt реализауется с помощью плагина - вам нужно в директории с исполняемым файлом сделать структуру папок plugins/imageformats/ и положить туда плагин, потом с помощью qt.conf указать путь до плагина (установив "Prefix=.").
Папку plugins делать не надо, только папку imageformats.
Цитата из assistent:
Цитировать
But where is the plugins directory? When the application is run, Qt will first treat the application's executable directory as the pluginsbase. For example if the application is in C:\Program Files\MyApp and has a style plugin, Qt will look in C:\Program Files\MyApp\styles.
« Последнее редактирование: Сентябрь 09, 2009, 14:46 от BRE » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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