Russian Qt Forum

Qt => Мультимедиа => Тема начата: Роман от Мая 27, 2013, 10:07



Название: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 10:07
Здравствуйте. Возникла проблема с проигрыванием анимации.
Делаю следующее:
..............
QLabel label;
QMovie movie(QDir::currentPath() + "/1.gif");
movie.setScaledSize(QSize(800,400));
label.setMovie(&movie);
label.setFixedSize(800,400);
label.show();
movie.start();
..............
На моем компе все работает шикарно. Анимация проигрывается.
При запуске проги на любом другом компе появляется прозрачный label, анимация не воспроизводится.
Думал дело в пути к файлу, пытался получить его с помощью QFileDialog. Эффект тот же. У меня работает, у других нет.
Причем если взять путь в кавычки
QMovie movie("\"" + QDir::currentPath() + "/1.gif\"");
перестает работать и у меня.
В чем может быть проблема и как ее исправить?
P.S.
Еще удивился тому, что label прозрачный. Обычно он по умолчанию серого цвета.


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 10:09
Плагины соответствующие надо с прогой таскать.


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 10:24
Плагины соответствующие надо с прогой таскать.
А можно более подробно? Я лишь недавно начал работать с Qt, пока плохо разбираюсь. Что именно должно быть вместе с exe-файлом, чтобы он корректно работал?


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 10:32
Рядом с exe файлом нужна папка плагинов для картинок imageformats с необходимыми плагинами.
Тоже делать, например, если будешь работать с БД, то папка sqldrivers с необходимыми плагинами.


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 10:39
К сожалению, это не помогает. Все остается по прежнему.
Даже если на другом компе путь к плагинам прописать в PATH, все равно анимации не грузятся.
С QPixmap такая же проблема.


Название: Re: Проблема с QMovie
Отправлено: Bepec от Мая 27, 2013, 10:42
Не пути к плагинам, а плагины положить в папку, а папку положить рядом с еxe.


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 10:46
Я так и сделал. Папку положил вместе с exe-файлом. Результат не изменился.
Уже после этого я пробовал добавлять пути..


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 10:49
По какому пути лежит exe и по какому пути лежат плагины? Скопируй прямо сюда.


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 10:52
exe-файл:
I:\DEBUG
плагины:
I:\DEBUG\imageformats

папку imageformats взял из
C:\Qt\4.8.4\plugins
вместе со всем содержимым


Название: Re: Проблема с QMovie
Отправлено: Bepec от Мая 27, 2013, 10:53
Файлы в папку, папку в архив zip, zip архив к сообщению и оукей.


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 11:15
Я не могу отправить всю папку, объем больше допустимого.
Кинул в архив exe-шник. Приложение ищет файлы с именами "1.gif" ... "9.gif" описанным выше способом.
Соответствующая анимация должна грузиться при нажатии на цифры 1 - 9 поверх окна и пропадать при нажатии на клавишу с цифрой 0.
В моем случае на других компах поверх основного окна появляется прозрачный label.


Название: Re: Проблема с QMovie
Отправлено: Bepec от Мая 27, 2013, 11:26
Гениально) Выложить программу без dll без указания версии Qt и компилятора и плагинов... Или вы надеетесь на телепатию?

Подсказка - имеются хостинги файлов.


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 11:27
Если ты хочешь быстрого решения своей проблемы - помогай сообществу ее понять. Телепаты здесь бывают редко.
Скинь свой собранный проект с прикрепленными dll и плагинами. Если сюда не помещается - используй файлообменники, тот же яндекс диск например.


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 11:32
Прошу прощения, не подумал)
http://yadi.sk/d/PrvXxOpU5D36y


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 11:37
Так, и дальше что. Как ей пользоваться, как проверить, работают ли гифы?


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 11:45
Я ведь уже написал выше.
Клавиши с цифрами 1 - 9 отображают одну из анимаций.
Клавиша с цифрой 0 прекращает показ анимации.


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 11:48
При этом, если гиф не грузится, поверх окна появляется прозрачный label, который блокирует работу приложения.
При правильной работе на нем должна проигрываться анимация.
Он снимается нажатием на 0.


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 11:57
Не работает, значит дело в чем-то другом.
Вот мой релиз http://yadi.sk/d/di8aabJU5D6X6. Просто QLabel с анимацией гифа.
Проверяй.


Название: Re: Проблема с QMovie
Отправлено: Bepec от Мая 27, 2013, 12:01
Похоже на реализацию  http://www.prog.org.ru/topic_24835_0.html Нне?


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 12:03
Ваш работает. Мой - только у меня.
Да, я читал эту статью. Но у меня все устроено иначе. Возможно в этом и проблема )
Ладно, спасибо всем за помощь. Буду искать проблему в коде.


Название: Re: Проблема с QMovie
Отправлено: Bepec от Мая 27, 2013, 12:07
Лучше б код показал. Мы б и подправили :)

PS всегда интересно посмотреть на похожую идею.


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 12:07
Вот тестовое приложение.
Собери его и проверь. Если работает - значит дело в твоем коде. Если нет - возможно Qt или плагины собраны другим компилятором, но это очень маловероятно, тогда бы твое приложение вообще не запускалось.

Код
C++ (Qt)
#include <QApplication>
#include <QLabel>
#include <QMovie>
 
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
 
 
QLabel label;
QMovie* movie = new QMovie(&label);
movie->setFileName("1.gif");
movie->start();
label.setMovie(movie);
label.show();
 
 
return a.exec();
}
 


Название: Re: Проблема с QMovie
Отправлено: Bepec от Мая 27, 2013, 12:12
Он же пишет - моё стёклышко он собирал и оно работает. Значит проблема в коде ;)


Название: Re: Проблема с QMovie
Отправлено: Роман от Мая 27, 2013, 16:36
Вот тестовое приложение.
Собери его и проверь. Если работает - значит дело в твоем коде. Если нет - возможно Qt или плагины собраны другим компилятором, но это очень маловероятно, тогда бы твое приложение вообще не запускалось.

Код
C++ (Qt)
#include <QApplication>
#include <QLabel>
#include <QMovie>
 
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
 
 
QLabel label;
QMovie* movie = new QMovie(&label);
movie->setFileName("1.gif");
movie->start();
label.setMovie(movie);
label.show();
 
 
return a.exec();
}
 

Собрал у себя. Картинка крутится. Запустил на другом компе (с плагинами)- пустое белое окно. Не находит гифы. Значит проблема на этапе сборки? Чего то еще не хватает или не настроена какая-нибудь важная штука?


Название: Re: Проблема с QMovie
Отправлено: _OLEGator_ от Мая 27, 2013, 16:39
Нет, не на этапе сборки. Какой-то косяк с плагинами.
Можно попробовать QPluginLoader и посмотреть какие ошибки он выдаст.