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)。这可能会有帮助: