В какой-то момент вам нужно будет позвонить processLabel->show()
для вашего главного окна для отображения фильма.Если gif зациклен, он будет повторяться бесконечно.В противном случае он будет воспроизводиться один раз.
Поскольку вы наследуете Ui :: MainWindow, я предполагаю, что вы используете Qt Designer для разметки своего окна.Возможно, вам будет полезно добавить processLabel в интерфейс пользователя в Qt Designer.Вы можете настроить таблицу стилей (добавить черный фон) графически, а затем просто позвонить ui->setupUi(this)
перед добавлением фильма.Вот пример кода, который работает для меня:
#include <QMovie>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
//calling setupUi creates processLabel and positions it and shows it correctly
QMovie *movie = new QMovie(":/slike/Loading_Animations.gif");
processLabel->setMovie(movie);
movie->start();
//if you haven't already called show for your main window call it
this->show();
}
В противном случае, прежде чем показывать свой QLabel
, убедитесь, что вы:
- покажите свое главное окно.
- Установить геометрию (вызов
QLabel::setGeometry(x,y,width,height)
) - Если gif больше, чем метка, обязательно наберите
QLabel::setScaledContents(true)
- Наконец, позвоните
QLabel::show()
.