Member 13740197 Ответов: 1

Как последовательно воспроизвести два GIF-файла в qt C++


Мое требование состоит в том, чтобы последовательно воспроизводить два GIF-файла один за другим. После того, как второй закончит снова, он должен начать первый. Проверьте приведенный ниже код. Здесь я должен играть abc.gif и еще def.gif соответственно. Не могли бы вы, пожалуйста, предоставить решение для этого.


QMovie movie = новый QMovie("/root/abc.gif");

if (!movie->isValid())
{
qDebug()<<"фильм Inavlid";
}
ui->label_banner->setMovie(фильм);

фильм->старт();
ui->stackedWidget->setCurrentIndex(4);

если (кино-и GT;currentFrameNumber() == видео-&ГТ;число кадров()-1)
{
movie = new QMovie("/root/def.gif");

if (!movie->isValid())
{
qDebug()<<"фильм Inavlid";
}
ui->label_banner->setMovie(фильм);

фильм->старт();
ui->stackedWidget->setCurrentIndex(4);
}

Что я уже пробовал:

QMovie movie = новый QMovie("/root/abc.gif");

if (!movie->isValid())
{
qDebug()<<"фильм Inavlid";
}
ui->label_banner->setMovie(фильм);

фильм->старт();
ui->stackedWidget->setCurrentIndex(4);

если (кино-и GT;currentFrameNumber() == видео-&ГТ;число кадров()-1)
{
movie = new QMovie("/root/def.gif");

if (!movie->isValid())
{
qDebug()<<"фильм Inavlid";
}
ui->label_banner->setMovie(фильм);

фильм->старт();
ui->stackedWidget->setCurrentIndex(4);
}

1 Ответов

Рейтинг:
11

Richard MacCutchan

Создайте функцию воспроизведения, которая проверяет правильность фильма и воспроизводит его. Тогда вам просто нужно что-то вроде

char* movies[] = { "/root/abc.gif", "/root/def.gif" }
for (int i = 0; ; i = i==1 ? 0 : 1)
{
    play(movies[i]);
}


Member 13740197

Привет,

Спасибо за ответ. Я пробовал с вашим кодом, но я не могу играть в GIF-файлы.Ниже приведена функция воспроизведения. Я печатаю значение i, оно непрерывно печатает 0 и 1, но gif не воспроизводится. Не могли бы вы сказать мне, как это решить?

недействительными играть(типа char *гиф)
{

фильм = новый QMovie(gif);
if (!movie->isValid())
{
qDebug()<<"фильм Inavlid";
}
ui->label_banner->setMovie(фильм);

фильм->старт();
ui->stackedWidget->setCurrentIndex(4);
}

Richard MacCutchan

Извините, но я не знаю QT, поэтому понятия не имею, почему этот код не работает.