2015-05-28 3 views
0

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

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

Упрощенный код.

заголовочный файл:

#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(); 
} 

ответ

1

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

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

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

Устанавливает размер масштабируемого размера в размере.

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

Смежные вопросы