大家好我想把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
}
答案 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
之前,请确保:
QLabel::setGeometry(x,y,width,height)
)QLabel::setScaledContents(true)
QLabel::show()
。答案 2 :(得分:-1)
调用函数;
后,您忘记添加分号(start()
)。