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

Задава мащабирания размер на рамката на размер.

Подозирам, че прозорецът трябва да е малко по-голям от рамката. Тъй като „това“ е основният прозорец, като зададете рамката на размера на прозореца, прозорецът ще се увеличи, за да компенсира увеличаването на размера на рамката. Това ще се случва всеки път, когато влезе във функцията on_pushButton_clicked.

person TheDarkKnight    schedule 28.05.2015