• QT-Qt显示GIF图片


    相关资料:

    https://blog.csdn.net/kidults/article/details/80195524

    main.cpp

     1 #include "mainwindow.h"
     2 
     3 #include <QApplication>
     4 
     5 int main(int argc, char *argv[])
     6 {
     7     QApplication a(argc, argv);
     8     MainWindow w;
     9     w.show();
    10     return a.exec();
    11 }
    View Code

    mainwindow.h

     1 #ifndef MAINWINDOW_H
     2 #define MAINWINDOW_H
     3 
     4 #include <QMainWindow>
     5 #include <QPainter>
     6 
     7 #include "gifWidget.h"
     8 
     9 QT_BEGIN_NAMESPACE
    10 namespace Ui { class MainWindow; }
    11 QT_END_NAMESPACE
    12 
    13 class MainWindow : public QMainWindow
    14 {
    15     Q_OBJECT
    16 
    17 public:
    18     MainWindow(QWidget *parent = nullptr);
    19     ~MainWindow();
    20     void paintEvent(QPaintEvent* pEvent);
    21 
    22 private:
    23     Ui::MainWindow *ui;
    24 
    25     gifWidget * m_pgifWidget;
    26 };
    27 #endif // MAINWINDOW_H
    View Code

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        setWindowTitle(QStringLiteral("Qt显示GIF图片"));
    
        m_pgifWidget = new gifWidget(this);
        m_pgifWidget->setGeometry(100,200, 400,300);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::paintEvent(QPaintEvent *pEvent)
    {
        // 界面背景图片片
        QPainter painter(this);
        painter.drawPixmap(0, 0, this->width(), this->height(), QPixmap(":/new/prefix1/q.jpg"));
    }
    View Code

    gifWidget.h

     1 #ifndef GIFWIDGET_H
     2 #define GIFWIDGET_H
     3 
     4 #include <QWidget>
     5 #include <QLabel>
     6 #include <QPushButton>
     7 #include <QVBoxLayout>
     8 #include <QMovie>
     9 
    10 class gifWidget : public QWidget
    11 {
    12     Q_OBJECT
    13 
    14 public:
    15     explicit gifWidget(QWidget *parent = 0);
    16     ~gifWidget();
    17 
    18 private:
    19     QMovie *movie;
    20     QLabel *label;
    21     bool isPlaying;
    22     QPushButton *button;
    23     QPushButton *button2;
    24 private slots:
    25     void playGif();
    26 };
    27 
    28 #endif // GIFWIDGET_H
    View Code

    gifWidget.cpp

     1 #include "gifWidget.h"
     2 
     3 gifWidget::gifWidget(QWidget *parent) :
     4     QWidget(parent)
     5 {
     6     isPlaying = false;
     7 
     8     movie = new QMovie(":/new/prefix1/A.gif");
     9     label = new QLabel(this);
    10     button = new QPushButton(this);
    11 
    12     button->setText(QStringLiteral("播放"));
    13     connect(button,SIGNAL(clicked(bool)),this,SLOT(playGif()));
    14 
    15     button2 = new QPushButton(this);
    16     button2->setGeometry(button->x(), button->y()+100, button2->width(), button2->height());
    17 
    18     QVBoxLayout *hLayout = new QVBoxLayout(this);
    19     hLayout->addWidget(button);
    20     hLayout->addWidget(label);
    21     setLayout(hLayout);
    22 }
    23 
    24 gifWidget::~gifWidget()
    25 {
    26 
    27 }
    28 
    29 void gifWidget::playGif()
    30 {
    31     if(isPlaying){
    32         movie->stop();
    33         label->clear();    //stop的时候把label清空
    34         isPlaying = false;
    35         button->setText(QStringLiteral("播放"));
    36     }else{
    37         label->setMovie(movie); //为label设置movie
    38         movie->start();         //开始显示
    39         isPlaying = true;
    40         button->setText(QStringLiteral("停止"));
    41     }
    42 }
    View Code
  • 相关阅读:
    C++模板实战6:迭代器
    Hacking up an armv7s library
    Android之ListView分页数据加载
    Android 命令行打包和签名
    django 自定模板标签的注册
    [置顶] 高效能人士的七个习惯读书笔记(二)
    价格战拉上了Android平板电脑
    Synergy 多系统共享鼠标键盘 Windows 和 Mac 完全配置教程
    global planner源码阅读
    源码安装eigen
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/13330506.html
Copyright © 2020-2023  润新知