Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на 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)