Qt显示图片的几种方式以及耗时比较

您所在的位置:网站首页 产品展现形式有哪几种方式图片 Qt显示图片的几种方式以及耗时比较

Qt显示图片的几种方式以及耗时比较

2024-07-09 18:57| 来源: 网络整理| 查看: 265

一.前言

Qt作为GUI图形库的选择之一,图片的显示也就尤为重要。例如背景的显示,icon的显示等等。这里我们来探讨一下Qt的几种图片显示方式和时间消耗。

二.Winows下图片显示

这里我们绘制一张1440*900的图片进行演示,演示硬件环境为:Win10 64位系统 + i3-8100 CPU 在这里插入图片描述

1.QPainter

这个作为Qt的基础绘画大师,能绘制各种规则不规则的图形,当然显示图片也不在话下。

QPainter painter(this); painter.drawPixmap(this->rect(),QPixmap(":/timg.jpg"));

绘制耗时结果:47ms ,后面显示的0十是因为图片没有变化没有重新绘制。在这里插入图片描述

2.QPalette QPalette palett; palett.setBrush(QPalette::Background,QBrush(QPixmap(":/timg.jpg"))); this->setPalette(palett); this->setAutoFillBackground(true);

绘制耗时结果:45ms 在这里插入图片描述

3.QLabel(QPixmap、stylesheet) //采用setPixmap进行图片绘制 QLabel *bgPix = new QLabel(this); bgPix->setPixmap(QPixmap(":/timg.jpg")); bgPix->adjustSize(); //采用样式表进行绘制 //bgPix->resize(1440,900); //bgPix->setStyleSheet("background-image:url(:/timg.jpg);");

绘制耗时结果:俩种方法对于QLabel耗时都差不多 44-45ms 在这里插入图片描述

4.QWidget(stylesheet) //不能是最基础父窗口否则不显示,适合子窗口显示 QWidget *win = new QWidget(this); win->resize(1440,900); win->setStyleSheet("border-image:url(:/timg.jpg);"); win->show();

在这里插入图片描述 绘制耗时结果: 44-45ms

通过4种法比较,windows下绘制一张图片耗时大致基本一致,都在44-47ms之间。而用qpainter耗费时间要略多一ms左右。其他3种方法耗时基本一样。由于数据太接近很难比较出几种方法的耗时优劣。 除此之外,QPushButton也有一个setIcon函数,也可以设置图片进行显示,这个不再演示,也不适合做大图片显示。

三.ARM-Linux下图片显示

以上是window下绘制一张图片耗时结果,接下来我们来研究下ARM平台绘制。arm平台的硬件环境: CPU:800Mhz 双核,不带opengl硬加速绘制。

绘制方式耗时结果QPainter280-350msQPalette260-270msQLabel260-275msQWidget265-280ms

ARM平台几种方法的绘制耗时大致排序是:QPainter>QWidget>QLabel>QPalette, QPalettede的绘制耗时最少。

以上我们主要展示了4种绘制图片的方法,至于耗时不能做绝对的参考,应该结合实际的绘制环境,是否CPU绘制、是否GPU渲染都可能影响绘制过程。

作者:费码程序猿 欢迎技术交流:QQ:255895056 转载请注明出处,如有不当欢迎指正



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3