Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在QMainWindow中放置GIF_C++_Qt_Animated Gif - Fatal编程技术网

C++ 如何在QMainWindow中放置GIF

C++ 如何在QMainWindow中放置GIF,c++,qt,animated-gif,C++,Qt,Animated Gif,嗨,我想把loader.gif文件放到我的qmain窗口中。 我想要黑色背景和中间的qQuin项。< /P> 这是我的代码,它什么都没做 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { QMovie *movie = new QMovie(":/slike/Loading_Animations.gif"); QLabel *processLabe

嗨,我想把loader.gif文件放到我的qmain窗口中。 我想要黑色背景和中间的qQuin项。< /P> 这是我的代码,它什么都没做

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
}

在我看来,您没有将标签放在布局中,也没有设置布局

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

由于您继承的是Ui::MainWindow,所以我假设您使用的是Qt设计器来布局窗口。在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();
}
#包括
MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(新ui::MainWindow)
{
用户界面->设置用户界面(此);
//调用setupUi将创建processLabel并将其定位并正确显示
QMovie*movie=newqmovie(:/slike/Loading_Animations.gif”);
processLabel->setMovie(电影);
电影->开始();
//如果您还没有为主窗口调用show,请调用它
此->显示();
}
否则,在显示
QLabel
之前,请确保:

  • 显示主窗口
  • 设置几何图形(调用
    QLabel::setGeometry(x、y、宽度、高度)
  • 如果gif大于标签,请确保调用
    QLabel::setScaledContents(true)
  • 最后,调用
    QLabel::show()

  • 您忘了在调用函数
    start()

    后添加分号(
    ),即使我放入您的代码行,也不会发生任何事情。我应该把它放在一个环里还是什么的?我在屏幕上看不到任何内容。此外,您可能需要在调用显示之前设置标签几何图形,方法是:
    processLabel->setGeometry()