Member 13740197 Ответов: 0

Как отобразить gif с меткой, которая находится в другом пользовательском интерфейсе в qt


Привет,

У меня есть требование, чтобы отобразить GIF с этикеткой(с widget.cpp). Метка присутствует в другом пользовательском интерфейсе(displayads.ui). Я могу отобразить изображение с этой меткой, но gif не отображается. Изображение & gif, которое я назначаю из widget.cpp. displayads.пользовательский интерфейс содержит две метки, одну для отображения изображений и одну для отображения gif. Для этого я прокомментировал Ui::displayads *ui & деструктор из displayads.h & displayads.cpp-да. Код приведен ниже.

Я закрываю этот objdispads через 3 секунды, но мое требование состоит в том, чтобы закрыть его из другой функции виджета. Не могли бы вы помочь мне отобразить GIF и закрыть этот objdispads из другой функции.

Что я уже пробовал:

Как уже упоминалось выше

Widget.cpp
///////////// for image display  //////////////

void Widget::Displayads()
{
  displayads *objdispads = new displayads(this);
    
  QPixmap pix1("/root/img.png");
  objdispads->ui->adlabel1->setPixmap(pix1);
  objdispads->ui->adlabel1->setScaledContents( true );
  objdispads->ui->adlabel1->setSizePolicy( QSizePolicy::Ignored, QSizePolicy::Ignored );

          //////////   code for gif display    /////////

    QMovie *movie = new QMovie("/root/swachbt.gif");
    if (!movie->isValid())
    {
        qDebug()<<"Movie is Inavlid";
    }
    objdispads->ui->adlabel2->setMovie(movie);
    movie->start();

    objdispads->show();

    QCoreApplication::processEvents();
    QCoreApplication::processEvents();

    sleep(3);
    objdispads->close();
    objdispads->deleteLater();
}

displayads.cpp
#include "displayads.h"
#include "ui_displayads.h"

displayads::displayads(QWidget *parent) :
QWidget(parent),
ui(new Ui::displayads)
{
    ui->setupUi(this);
    this->setWindowFlags(Qt::FramelessWindowHint);
    ui->adlabel1->setAutoFillBackground(true);
//  ui->adlabel2->setAutoFillBackground(true);
}

//displayads::~displayads()
//{
// delete ui;
//}

displayads.ч
#ifndef DISPLAYADS_H
#define DISPLAYADS_H

#include <qwidget>

namespace Ui {
class displayads;
}

class displayads : public QWidget
{
    Q_OBJECT
    
public:
    explicit displayads(QWidget *parent = 0);

    Ui::displayads *ui;

//    ~displayads();
    
private:
//    Ui::displayads *ui;
};

#endif // DISPLAYADS_H

0 Ответов