Qt实现 QLabel显示文本与图片、动图

QLabel概念:

在Qt中,QLabel类用于文本或图片(包括动图gif)、视频的显示,并不提供用户交互功能,

如果需要交互,比如响应鼠标事件,根据面向对象的里氏替换原则,子类必须能够替换它们的父类,同样Qt也支持该理念,所以可以新建一个类继承自QLabel,再重写鼠标事件,

子类此时通过继承,就具有了父类QLabel的功能,同时也具有了自己的事件,不过本文讨论的是Qt实现 QLabel显示文本与图片,不再引申其他。

一、在界面显示与获取文本:

ui->label->setText("hello qt");    //设置文本

ui->label->text();    //获取文本

通过setText()函数设置需要显示的文本,并且可以通过text()函数获取当前被设置的文本。

二、在界面显示图片:

显示图片通常有两种,一个是QPixmap类,一个是QImage类

下面看看二者主要的不同点:

1、QPixmap主要是用于绘图,针对屏幕显示而最佳化设计。而QImage主要是为图像I/O、图片访问和像素修改而设计的。

2、QPixmap依赖于所在的平台的绘图引擎,故例如反锯齿等一些效果在不同的平台上可能会有不同的显示效果,QImage使用Qt自身的绘图引擎,可在不同平台上具有相同的显示效果

3、目前的Qt会把QPixmap都存储在graphics memory中,QImage是存储在客户端的,是独立于硬件的。在 X11, Mac 以及 Symbian平台上,QPixmap 是存储在服务器端,而QImage则是存储在客户端,在Windows平台上,QPixmap和QImage都是存储在客户端,并不使用任何的GDI资源。

4、由于QImage是独立于硬件的,也是一种QPaintDevice,因此我们可以在另一个线程中对其进行绘制,而不需要在GUI线程中处理,使用这一方式可以很大幅度提高UI响应速度。

一、使用QImage在QLabel上显示图片。绝对路径方式

QImage *image=new QImage;
image->load("G:/Qt_coding/QLabelTest/1.png");      //绝对路径
//image->load("G:\\Qt_coding\\QLabelTest\\1.png"); //绝对路径的另一种方式
ui->label->setPixmap(QPixmap::fromImage(*image));

二、使用QPixmap显示图片。当前路径和相对路径方式

​QPixmap *photo=new QPixmap;
photo->load("./test.png");            //表示当前路径 注意Qt的当前路径在exe的上一层目录 不是代码文件的文件夹 这里和C++不一样,

//photo->load("./../image/1.png");    //相对路径方式  ./可以忽略

ui->label->setPixmap(*photo);

//图片自适应label大小
ui->label->setScaledContents(true);

//修改label大小
ui->label->resize(200,300);

三、使用QMovie显示gif

movie.setFileName("G:/Qt_coding/QLabelTest/3.gif");    //已经在类中声明了movie
ui->label->setMovie(&movie);
movie.start();

如果使用QImage或者QPixmap显示gif,图片是动不了的,所以使用的是Qmovie类来实现动图的播放

这里通过start()函数来播放gif动画。可以通过stop()停止gir的播放,

或者使用setPaused(bool),设置为true用来暂停动画的播放,false恢复播放。

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值