QMovie::setScaledSize() изменить размер метки

Я пытаюсь использовать QLabel для воспроизведения анимации gif. Анимация gif используется для отображения состояния загрузки. Анимация должна воспроизводиться каждый раз, когда пользователь входит в сцену.

Наряду с увеличением времени ввода, метка становится больше. Я не знаю почему.

Вот упрощенный код.

файл .h:

#include <QtGui/QMainWindow>
#include "ui_qmovietest.h"
#include <QMovie>

class QMovieTest : public QMainWindow
{
    Q_OBJECT

public:
    QMovieTest(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~QMovieTest();
    public slots:
        void on_pushButton_clicked();
private:
    Ui::QMovieTestClass ui;
    QMovie* mMovie;
};

вот файл .cpp:

#include "qmovietest.h"
#define PATH ":/QMovieTest/processing.gif"
QMovieTest::QMovieTest(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);
    mMovie = new QMovie(PATH);
    ui.label->setMovie(mMovie);
    mMovie->stop();
}

QMovieTest::~QMovieTest()
{

}

void QMovieTest::on_pushButton_clicked()
{
    //Pushing a Button represents entering the scene
    //Label get larger.
    mMovie->setScaledSize(this->size());
    mMovie->start();
}

person John Zhu    schedule 28.05.2015    source источник


Ответы (1)


Когда код вводит "on_pushButton_clicked", вы вызываете

mMovie->setScaledSize(this->size());

Согласно документации для setScaledSize

Устанавливает масштабируемый размер кадра в size.

Я подозреваю, что окно должно быть немного больше, чем рамка. Поскольку «это» является главным окном, при установке фрейма на размер окна окно будет увеличиваться, чтобы компенсировать увеличение размера фрейма. Это будет происходить каждый раз, когда он входит в функцию on_pushButton_clicked.

person TheDarkKnight    schedule 28.05.2015