首页 > 其他分享 >Qt QMovie无法显示gif动画的一种解决方法

Qt QMovie无法显示gif动画的一种解决方法

时间:2024-05-22 09:31:11浏览次数:27  
标签:动画 Qt startGif showGif movie gif QMovie

注:本来用这种方法显示gif动画是没有问题的。

问题:如下方法,槽函数startGif()如下,点击按钮无法出现gif动画
分析:

gif动画资源确实是加载进来了,但是在执行movie.start()时,整个资源就已经消失了,所以无法显示动画。要使资源长期存在需要用到c中的修饰符: static。

1 void showGif::startGif()
2 {
3     QMovie movie("sa1.gif");
4     startGif_button->setText("......");
5     showGif_label->setMovie(&movie);
6     movie.start();
7 }

问题 效果:

 这里的static不仅使资源长期存在,能够显示gif动画,而且提高了效率,只用加载一次gif资源即可。

1 void showGif::startGif()
2 {
3     static QMovie movie("sa1.gif");
4     startGif_button->setText("......");
5     showGif_label->setMovie(&movie);
6     movie.start();
7 }

解决 效果:

 

标签:动画,Qt,startGif,showGif,movie,gif,QMovie
From: https://www.cnblogs.com/ybqjymy/p/18205489

相关文章

  • Qt QMovie播放gif(播放、暂停和继续)
    有些时候我们需要展示一个gif图片,可是用了普通的方法发现不行。啊哦,这就是生活中的理解和程序猿的区别了,程序猿眼中的gif不是图片,而是一个movie。QT提供了QMovie来进行操作。演示示例是通过两个按钮来进行操控,一个负责暂停一个负责进行继续播放。首先要在头文件中声明这个类,一......
  • qt如何将下拉框的框设置为圆角矩形
    在Qt中,可以使用样式表(QSS)来设置下拉框的外观,包括圆角矩形的样式。以下是一个例子://在C++代码中设置样式表QComboBox{border-radius:8px;/*设置圆角半径*/background-color:#FFFFFF;/*设置背景颜色*/color:#333333;/*设置文字颜色*/p......
  • Qt 动画播放之QMovie类
    主要是用到QMovie类实现在事件触发时开启动画播放效果(需要注意的是,这个动画播放默认是循环播放的,如果不做特殊处理动画会一直播放)1QMovie*movie=newQMovie("aaa.gif");2ui->movieLabel->setMovie(movie);3movie->start();//启动gif图片4//movie->......
  • qt之点的绘制示例demo
    #include"mainwindow.h"#include"ui_mainwindow.h"#include<QPainter>#include<QColor>QColorm_color;intm_x=0;intm_y=0;intm_w=0;intm_h=0;MainWindow::MainWindow(QWidget*parent):QMainWindow(parent)......
  • Qt 程序启动画面QSplashScreen
    QSplashScreen是Qt框架提供的一个类,用于在应用程序启动时显示一个带有文本和图像的启动画面(SplashScreen)。使用QSplashScreen类,你可以在应用程序启动时显示一个自定义的启动画面,以提供更好的用户体验。这个类提供了一些方法和属性,可以让你设置启动画面的文本、图像和其......
  • qt中添加多个UI界面,并在其他文件中调用该UI界面
    一、概述qt创建一个新项目时,会创建一个属于mainwindow'的主ui界面,这时如果想要创建多个窗口,可以有三种方法。第一种:使用代码创建一个新窗口,优点是灵活,缺点是麻烦,其中控件和布局都需要代码来创建。第二种:在ui设计界面使用tabwidget控件来达到多个窗口的效果,不过这种方法只能......
  • qt拖动窗口
    voida::mousePressEvent(QMouseEvent*event){if(event->button()==Qt::LeftButton&&event->pos().y()<(this->height()-mainWidget->height())){m_dragging=true;m_dragStarPos=event->pos();}}voida::......
  • QT使用串口通信点击主界面通信阻塞
    1.问题导入在使用QT进行串口上位机开发时遇到鼠标点击主界面导致串口接收数据阻塞,无法继续在QT控件中更新接收到的数据。2.解决办法使用多线程:将串口通信放入子线程中。`QSerialPort*UARTDevide;//串口UART*newUART;//串口类QThreadUARTThred;//串口线程newUART->mo......
  • CLON + QT + CMAKE debug 不打印 (控制台不输出)
    原因:CMAKE设置了WIN32_EXECUTABLETRUE这表示了要生成一个GUI程序,而且WindowsGUI会禁用控制台输出将set_target_properties(aaPROPERTIESWIN32_EXECUTABLETRUE)修改为set_target_properties(aaPROPERTIESWIN32_EXECUTABLEFALSE)或者手动创建控制台:`//未......
  • QT基础语法与控件
    1.基础使用纯正的开源版本QT使用C++来实现QT使用QT可以使C++项目可视化本身也是C++的一个库允许跨平台QT特征面向对象,模块化设计调用,所有QT控件可继承控件之间的通信,signalslot友好的联机帮助,函数参数手册自定义控件设计QTCreator编译器集成开发环境IDE直接下载QT......