2012-04-02 22 views
0

大家好,我想把loader.gif文件放到我的QMainWindow中。 我想要黑色背景和中间的这个QMovie项目。如何把GIF里面QMainWindow

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

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 
} 
+0

你有一个qrc文件吗? – UmNyobe 2012-04-02 19:30:20

回答

0

在某些时候,你需要调用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之前,请确保您:

  1. 显示您的主窗口。
  2. 设置几何图形(调用QLabel::setGeometry(x,y,width,height)
  3. 如果GIF比标签更大确保您拨打QLabel::setScaledContents(true)
  4. 最后,调用QLabel::show()
+0

即使我把你的代码行也没有发生。我应该把它放在一个循环或什么?我在屏幕上看不到任何东西 – 2012-04-03 12:24:35

+0

另外,您可能需要在调用显示之前设置标签几何,命令为:'processLabel-> setGeometry()'。 – buster 2012-04-03 12:43:18

0

在我看来你没有把布局中的标签,你没有设置布局