次のようなウィジェットに画像を表示するためにQGraphicsView
、クラスを使用しました。QGraphicsScene
m_Scene->addPixmap(QPixmap(fileName));
m_View->setScene(m_Scene);
同じシーンで.gifアニメーションを表示するにはどうすればよいですか?
次のようなウィジェットに画像を表示するためにQGraphicsView
、クラスを使用しました。QGraphicsScene
m_Scene->addPixmap(QPixmap(fileName));
m_View->setScene(m_Scene);
同じシーンで.gifアニメーションを表示するにはどうすればよいですか?
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の例も確認してください。彼らは本当に助けることができます!
私以外の誰かが同じ問題に遭遇した場合に備えて、これをここに置きます。
問題
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
ます。
http://doc.qt.io/qt-5/qmovie.html
グーグルとQtドキュメントはあなたの友達です。例もあります。
PS:中国にいない限り、Googleにアクセスすることはできませんが、Bingやdoc.qt.io.comなどがあります。
PS2:もう少し詳細な答え:viaを持つaQGraphicsProxyWidget
のを使用できます。おそらくそれを行うためのより簡単な/より短い方法があります。QLabel
QMovie
QLabel::setMovie
以下のコードのように、リソースの適切なパスを指定します
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();