Frage Wie setze ich das animierte Icon in Qt5 auf QPushButton?


QPushButton kann ein Icon haben, aber ich muss ein animiertes Icon darauf setzen. Wie macht man das? Ich habe eine neue Klasse implementiert von QPushButton aber wie man das Symbol von ersetzt QIcon zu QMovie?


14
2018-03-12 23:22


Ursprung


Antworten:


Dies kann ohne Unterklassen erreicht werden QPushButton indem Sie einfach den Signal / Slot-Mechanismus von Qt verwenden. Verbinde die frameChanged Signal von QMovie zu einem benutzerdefinierten Slot in der Klasse, die dies enthält QPushButton. Diese Funktion wendet den aktuellen Rahmen des QMovie als Ikone der QPushButton. Es sollte ungefähr so ​​aussehen:

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

Und beim Zuweisen von QMovie und QPushButton Mitglieder ...

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();

21
2018-03-13 04:34