#include <QtGui>
class TOOTBtn : public QPushButton
{
Q_OBJECT
public:
TOOTBtn(const QString &imgPath, const QString &label, QWidget *parent = 0 )
: QPushButton(parent), _label(label)
{
if(!imgPath.isEmpty()){
_movie = new QMovie(imgPath, QByteArray(), this);
connect(_movie, SIGNAL(frameChanged(int)), this, SLOT(iconChged(int)));
_movie->start();
}
}
private slots:
void iconChged(int){
QTextDocument Text;
Text.setHtml(_label);
QPixmap currFrame = _movie->currentPixmap();
QPixmap pixmap(Text.size().width(), currFrame.height());
pixmap.fill( Qt::transparent );
QPainter painter( &pixmap );
painter.drawPixmap(( pixmap.width()-currFrame.width()) / 2 ,
( pixmap.height()-currFrame.height()) / 2, currFrame );
Text.drawContents(&painter, pixmap.rect());
setIcon(QIcon( pixmap));
setIconSize(pixmap.rect().size());
}
private:
QMovie *_movie;
QString _label;
};
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
QString TOOTLabel = QObject::tr("<h2><i>Hello</i> <font color=red>TOOTzoe.com</font></h2>"
"<b>Animating Button Test....<b>");
TOOTBtn btn("zoe.gif", TOOTLabel, &window);
btn.move(100,100);
window.show( );
window.resize(640,400);
window.setWindowTitle("Animating Button Test....");
QObject::connect(&btn, SIGNAL(clicked()), &window, SLOT(close()));
return app.exec();
}