Everyone saw beautiful animated images on the Internet. They can be downloaded to your computer as a file with the gif extension. The question arises: can I use these images in my programs? It is possible, the Qt library answers. Consider how to do this.
Create a new project of type Qt widgets. We add a QMovie object to play the animation. On the form we place an object of class QLabel. In the application designer, specify the file name for the animation object:
mo.setFileName(":/ico/loader.gif");
We pass the pointer to this object in label:
ui->label->setMovie(&mo);
We start animation playback:
mo.start();
widget.h file
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QMovie> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void setSpeedMovie(int); void setSizeMovie(int); private: Ui::Widget *ui; QMovie mo; double m; }; #endif // WIDGET_H
The QMovie class provides functions for controlling the playback speed of setSpeed() and the scale setScaledSize(). The first function is to transfer the relative playback speed in percent (100 - nominal speed, 200 - double), the second dimension of the rectangle into which you want to enter your drawing. This program implements the management of scale and speed using two QSpinBox objects. The variable m of type double is needed in order to preserve the proportions of the gif image when scaling.
widget.cpp file
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); QPixmap pix(":/ico/loader.gif"); m = double(pix.width())/pix.height(); mo.setFileName(":/ico/loader.gif"); setSpeedMovie(ui->spinBox->value()); setSizeMovie(ui->spinBox_2->value()); ui->label->setMovie(&mo); mo.start(); connect(ui->spinBox, SIGNAL(valueChanged(int)), this, SLOT(setSpeedMovie(int))); connect(ui->spinBox_2, SIGNAL(valueChanged(int)), this, SLOT(setSizeMovie(int))); } Widget::~Widget() { delete ui; } void Widget::setSpeedMovie(int s) { mo.setSpeed(s); } void Widget::setSizeMovie(int size) { mo.setScaledSize(QSize(size*m, size)); }
Using gif animation can be useful for either decorating an application, or for visualizing some processes, such as uploading or progressing. Animation playback can be stopped using the stop() slot. The project can be downloaded from the link .
Добрый день, Dmitras.