QPushButton添加gif图标

来源:互联网 发布:便捷软件 编辑:程序博客网 时间:2024/05/20 05:25
#include <QtGui>class TOOTBtn : public QPushButton{    Q_OBJECTpublic:    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();}
0 0
原创粉丝点击