如何将GIF放在QMainWindow中

时间:2012-04-02 13:00:44

标签: c++ qt animated-gif

大家好我想把loader.gif文件放到我的QMainWindow中。 我希望在中间有黑色背景和这个QMovie项目。

这是我的代码,它没有做任何事情。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    QMovie *movie = new QMovie(":/slike/Loading_Animations.gif");
    QLabel *processLabel = new QLabel(this);
    processLabel->setMovie(movie);
    movie->start()

    //how to assign this to my UI
}

3 个答案:

答案 0 :(得分:0)

我看到你没有把标签放在布局中,你没有设置布局

答案 1 :(得分:0)

在某些时候,您需要为主窗口调用processLabel->show()来显示电影。如果gif循环,它将无限重复。否则它只会播放一次。

由于您继承了Ui :: MainWindow,我假设您使用Qt Designer来布局窗口。在Qt Designer中将processLabel添加到用户界面可能对您有利。您可以以图形方式设置样式表(添加黑色背景),然后在添加电影之前调用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之前,请确保:

  1. 显示您的MainWindow。
  2. 设置几何(调用QLabel::setGeometry(x,y,width,height)
  3. 如果gif大于标签,请务必致电QLabel::setScaledContents(true)
  4. 最后,请致电QLabel::show()

答案 2 :(得分:-1)

调用函数;后,您忘记添加分号(start())。