Подтвердить что ты не робот

Как установить анимированный значок в QPushButton в Qt5?

QPushButton может иметь значок, но мне нужно установить анимированный значок. Как это сделать? Я создал новый класс из QPushButton, но как заменить значок с QIcon на QMovie?

4b9b3361

Ответ 1

Это можно выполнить без подкласса QPushButton, просто используя механизм сигнала/слота Qt. Подключите frameChanged сигнал QMovie к пользовательскому слоту в классе, который содержит этот QPushButton. Эта функция будет применять текущий кадр QMovie как значок QPushButton. Он должен выглядеть примерно так:

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