Qt5 で QPushButton にアニメーションアイコンを設定するにはどうすればいいですか? 質問する

Qt5 で QPushButton にアニメーションアイコンを設定するにはどうすればいいですか? 質問する

QPushButtonアイコンを設定できますが、アニメーションアイコンを設定する必要があります。 設定方法は? から実装された新しいクラスを作成しましたが、アイコンをからQPushButtonに置き換えるにはどうすればよいでしょうか?QIconQMovie

ベストアンサー1

QPushButtonこれは、サブクラス化せずに、Qt のシグナル/スロット メカニズムを使用するだけで実現できます。frameChangedのシグナルをQMovie、この を含むクラスのカスタム スロットに接続します。この関数は、 の現在のフレームをのアイコンとしてQPushButton適用します。次のようになります。QMovieQPushButton

// member function that catches the frameChanged signal of the QMovie
void MyWidget::setButtonIcon(int frame)
{
    myPushButton->setIcon(QIcon(myMovie->currentPixmap()));
}

QMovieそして、あなたとメンバーを割り当てるときQPushButton...

myPushButton = new QPushButton();
myMovie = new QMovie("someAnimation.gif");

connect(myMovie,SIGNAL(frameChanged(int)),this,SLOT(setButtonIcon(int)));

// if movie doesn't loop forever, force it to.
if (myMovie->loopCount() != -1)
    connect(myMovie,SIGNAL(finished()),myMovie,SLOT(start()));

myMovie->start();

おすすめ記事