Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Qt5中的QToolButton上设置GIF图像_C++_Windows_Qt5_Gif - Fatal编程技术网

C++ 如何在Qt5中的QToolButton上设置GIF图像

C++ 如何在Qt5中的QToolButton上设置GIF图像,c++,windows,qt5,gif,C++,Windows,Qt5,Gif,我想在QToolButton上显示“GIF”图像 目前,我正在将QMovie设置为QLable,并通过隐藏QToolButton来显示QLable 我还尝试使用样式表设置gif,但失败了 但是,是否可以将动画图像(.gif)直接显示到QToolButton 请引导我 提前谢谢 QMovie*fan_gif=new QMovie("://png/gif/fan.gif"); QSize MovSize(48, 48); fan_gif->setScaledSize(MovSize); QLa

我想在
QToolButton
上显示
“GIF”
图像

目前,我正在将
QMovie
设置为
QLable
,并通过隐藏
QToolButton
来显示
QLable

我还尝试使用样式表设置
gif
,但失败了

但是,是否可以将动画图像(.gif)直接显示到
QToolButton

请引导我

提前谢谢

QMovie*fan_gif=new QMovie("://png/gif/fan.gif");
QSize MovSize(48, 48);
fan_gif->setScaledSize(MovSize);
QLabel*pLabel = new QLabel(ui->toolButton_fan_1);
pLabel->setMovie(fan_gif);
fan_gif->start();
pLabel->setGeometry(5, 5, 48, 48);
代码取自工作应用程序Qt4。使用按钮的父项创建标签,这是beauty Qt。

\include
#include <QtGui>
#include <QToolButton>

class TOOTBtn : public QToolButton
{
    Q_OBJECT
public:
    TOOTBtn(const QString &imgPath, const QString &label, QWidget *parent = 0)
        : QToolButton(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"
#include <QApplication>
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("a.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();
}
#包括 类TOOTBtn:公共QToolButton { Q_对象 公众: TOOTBtn(常量QString&imgPath,常量QString&label,QWidget*parent=0) :QToolButton(父级),\u标签(标签) { 如果(!imgPath.isEmpty()){ _movie=newqmovie(imgPath,QByteArray(),this); 连接(_movie,SIGNAL(frameChanged(int)),此,插槽(icoched(int)); _电影->开始(); } } 专用插槽: 虚空图标连接(int){ QTextDocument文本; setHtml(_标签); QPixmap currFrame=_movie->currentPixmap(); QPixmap pixmap(Text.size().width(),currFrame.height()); pixmap.fill(Qt::透明); 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()); } 私人: QMovie*_电影; QString_标签; }; #包括“main.moc” #包括 int main(int argc,char*argv[]) { QApplication应用程序(argc、argv); QWidget窗口; QString TOOTLabel=QObject::tr(“Hello TOOTzoe.com” “动画按钮测试…”; TOOTBtn btn(“a.gif”、TOOTLabel和window); 基站移动(100100); window.show(); 调整窗口大小(640400); setWindowTitle(“动画按钮测试…”); QObject::连接(&btn,信号(单击()),&window,插槽(关闭()); 返回app.exec(); }
您确定代码在QToolButton中显示gif吗?请详细说明您的答案,为什么以及如何帮助解决原始问题?仅代码的答案令人困惑。请将Qtool按钮置于qdialog中。按钮的大小为58x58。在构造函数中,使用qdialog中的qtoolbutton创建一个具有父级的qlabel。不提交答案,因为我没有检查这是否可行:也许您可以在qtoolbutton上执行setIcon(myMovie)。这可能会有帮助: