Версия для печати темы
Форум на CrossPlatform.RU _ Qt Мультимедиа _ Не отображаются картинки на пк, где не установлен Qt
Автор: MishaUA 12.7.2013, 12:43
Вобщем, есть такой код:
QMovie* mm = new QMovie(this);
mm->setFileName(":/new/pict/hot.gif");
mm->stop();
ui->label->setMovie(mm);
mm->start();
ui->label->adjustSize();
ui->label2->setPixmap(QPixmap(":/new/pict/hot.gif"));
ui->label2->adjustSize();
ui->label3->setPixmap(QPixmap(":/new/pict/WinXP.jpeg"));
ui->label3->adjustSize();
на label выводится gif в виде анимации, на label2 та же gif, но как картинка, на label3 выводится jpeg как картинка.
Проблема в том, что у меня все работает отлично, в вот на пк, где не установлен Qt ниодна графика не отображается.
На пк без Qt в папке с программой лежат такие библиотеки:
Какие еще dll нужно добавить?
PS: Qt5
Автор: MishaUA 12.7.2013, 15:00
Насколько я понял, стандартными методами отображаются только BMP и PNG, для остальных нужны плагины с папки Qt, я поместил папку plugins в папку с программой, и с main.cpp сделал так:
QStringList list_path;
QDir dir = QDir(QApplication::applicationDirPath()+"/plugins/");
list_path << dir.absolutePath ();
QApplication::setLibraryPaths(list_path);
Теперь, если я у себя на пк запускаю - работает нормально, если удалю папку plugins, то картинки не отображаются, именно так и должно быть.
Но при запуске на пк без Qt появилась ошибка runtime error.
Что я сделал не так?
Автор: Litkevich Yuriy 12.7.2013, 16:19
Цитата(MishaUA @ 12.7.2013, 17:00)
я поместил папку plugins в папку с программой, и с main.cpp сделал так:
в этом нет нужды, http://www.wiki.crossplatform.ru/index.php/Развертывание_приложений_Qt_в_MS_Windows
Автор: MishaUA 12.7.2013, 18:58
сделал, как написано по ссылке:
Копирование плагинов в каталог с программой
Как сказано в Асистенте (plugins-howto.html)
« Когда приложение запущено, Qt сначала просматривает каталог исполняемого файла приложения в качестве pluginsbase. Например, если приложение находится в C:\Program Files\MyApp и имеет подключаемый модуль стиля, Qt будет искать в C:\Program Files\MyApp\styles. »
Другими словами, каталоги плагинов Qt (например, imageformats или sqldrivers) необходимо скопировать в каталог, где расположен исполняемый фал приложения/
но не помогло - картинки не отображаются(кроме bmp и png).
Кстати, Если скопировать эти плагины в папку с программой, на которой есть Qt, то картинки так же перестают работать
Автор: MishaUA 12.7.2013, 19:41
а можно ли с помощью какого нить софта узнать, какие dll требует прога?
Автор: ilyabvt 12.7.2013, 20:29
Есть, например: http://www.dependencywalker.com/
Автор: MishaUA 13.7.2013, 12:48
Такс, вобщем, после тщательного поиска в инете выяснилось, что в VisualStudio нужно добавить опцию компиляции -no-plugin-manifests, Но Qt Creator такого не поддерживает (делал в .pro файле QMAKE_CXXFLAGS += -no-pluginsб но компилер сказал, что не знает такого). Как эта опция пишется в Qt Creator?
Автор: Litkevich Yuriy 13.7.2013, 23:20
Цитата(MishaUA @ 13.7.2013, 14:48)
Как эта опция пишется в Qt Creator?
Qt Creator - всего лишь IDE, она вообще ничего не поддерживает. Ключи компиляции может поддерживать только компилятор. Для MinGW в таком ключе нужды нет (он его не знает).
Цитата(MishaUA @ 12.7.2013, 20:58)
Кстати, Если скопировать эти плагины в папку с программой, на которой есть Qt, то картинки так же перестают работать
плагины или их каталог?
Автор: MishaUA 14.7.2013, 1:09
уже разобрался с проблемой - скопировал папку plugins и все dll с папки bin - заработало! Затем, удалил не нужные dll
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)