27

次のようなウィジェットに画像を表示するためにQGraphicsView、クラスを使用しました。QGraphicsScene

m_Scene->addPixmap(QPixmap(fileName));
m_View->setScene(m_Scene);

同じシーンで.gifアニメーションを表示するにはどうすればよいですか?

4

4 に答える 4

80

QGraphicsViewまたはでGIFアニメーションを使用していませんQGraphicsScene。でのみ使用していQDialogますが、同じものだと思うので、次のコードを使用します。

QMovie *movie = new QMovie(":/images/other/images/16x16/loading.gif");
QLabel *processLabel = new QLabel(this);
processLabel->setMovie(movie);
movie->start();

私はこのリンクloading.gifから取った。


PS:QtSDKの例も確認してください。彼らは本当に助けることができます!

于 2010-07-15T05:25:43.173 に答える
24

私以外の誰かが同じ問題に遭遇した場合に備えて、これをここに置きます。

問題

GIFは読み込まれず、isValid()が返されますfalse

コード

// Load animated GIF
QMovie* movie = new QMovie("foo.gif");

// Make sure the GIF was loaded correctly
if (!movie->isValid()) 
{
    // Something went wrong :(
}

// Play GIF
QLabel* label = new QLabel(this);
label->setMovie(movie);
movie->start(); 

解決

これを解決するには、GIFを使用できるように、exeの横にqgif4.dllある名前のフォルダーにQtのGIFプラグインを配置する必要がありました。imageformats

dllはの下にあり /plugins/imageformats/qgif4.dllます。

于 2013-02-16T20:23:27.830 に答える
3

http://doc.qt.io/qt-5/qmovie.html

グーグルとQtドキュメントはあなたの友達です。もあります。

PS:中国にいない限り、Googleにアクセスすることはできませんが、Bingやdoc.qt.io.comなどがあります。

PS2:もう少し詳細な答え:viaを持つaQGraphicsProxyWidgetのを使用できます。おそらくそれを行うためのより簡単な/より短い方法があります。QLabelQMovieQLabel::setMovie

于 2010-07-14T18:45:52.833 に答える
1

以下のコードのように、リソースの適切なパスを指定します

QMovie *movie=new QMovie(":/images/foo.gif");
if (!movie->isValid()) 
    {
     // Something went wrong :(
    }

// Play GIF
label=new QLabel(this);
label->setGeometry(115,60,128,128);
label->setMovie(movie);
movie->start();
于 2017-07-17T08:58:43.937 に答える