2017-07-05 1 views
0

wie man framChanged (int) benutzt, um zu entscheiden, dass das Bild das letzte Bild ist, möchte ich das Signal verwenden, um das Qmovie zu stoppen, es einmal statt zu spielen für immer.wie man signal frameChanged (int) benutzt, um das QMovie einmal in QT zu spielen

QMovie *movie = new QMovie(); 
movie->setFileName("C:/Qt/qtcreator-2.2.1/game/test/pikaqiu.gif"); 
QSize size = this->getLabelPointer()->size(); 
movie->setScaledSize(size); 
this->getLabelPointer()->setMovie(movie); 
QObject::connect(movie,SIGNAL(finished()),movie,SLOT(deleteLater())); 
movie->start(); 
enter code here 
delete this; 
movie->stop(); 

`

+0

Möchten Sie erkennen, wenn Sie das letzte Bild erhalten? – eyllanesc

+0

Ja .............. – Rex

+0

Warum benutzen Sie nicht das fertige() Signal, sagt Ihnen das, wenn QVideo endet? – eyllanesc

Antwort

0

müssen Sie die frameCount() Funktion verwenden, um die Anzahl der Frames von QMovie zu bekommen.

QMovie *movie = new QMovie(); 
movie->setFileName("download.gif"); 
ui->label->setMovie(movie); 

connect(movie, &QMovie::frameChanged, [=](int frameNumber){ 
    if(frameNumber == movie->frameCount()-1){ 
     movie->stop(); 
     movie->deleteLater(); 
    } 
}); 
movie->start(); 
+0

danke !!!!!!! – Rex

+0

Bitte, wenn meine Antwort hilft Ihnen, es als korrekt zu markieren bitte – eyllanesc

+0

'void QMovie :: frameChanged (int)' ist geschützt, wie man damit umgehen? – Rex

Verwandte Themen