QPushButton
может иметь значок, но мне нужно установить анимированный значок. Как это сделать?
Я создал новый класс из QPushButton
, но как заменить значок с QIcon
на QMovie
?
Как установить анимированный значок в QPushButton в Qt5?
Ответ 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();