都是用于图片显示的
Qimage可以编辑,硬件独立
QPixmap不可编辑,硬件关联(不可以跨线程访问,使用Qpixmap在多线程加载时会吃很多苦)(报错segmentation fault段错误,很大概率是硬件关联的问题)
QPixmap依赖于硬件,QImage不依赖于硬件。 在X11, Mac 以及 Symbian平台上。 QImage: 因为它是存储在客户端,往QImage上绘图比较快,但显示它则比较慢。QPixmap: 具体实现是依赖于系统的,它是存储在服务器端,往QPixmap上绘图比较慢,但显示它则比较快。但在Windows平台上则是是一样的,因为它们都存储在客户端,并不使用任何的GDI资源,可能看起来并没有多大区别。 目前的Qt会把QPixmap都存储在graphics memory中,这明显是依赖硬件的。因此我们对QPixmap的使用需要格外注意。 那么Qt为什么要这么做呢?很简单,设计之初QPixmap就是用来加速显示的,例如我们在paint的时候用QPixmap就会比用其他类的效果好许多。
segmentation fault的解决方法,用QImage代替QPixmapQImage image;
image.load(path);```<br />
QThread::msleep(500);<br />
emit onImgLoadSignal(image);<br />
<br />听说QImage使用指针会删不掉,18年十月的帖子说qt可能存在bug,Qpixmap::fromImage有bug,这样做内存会泄漏<br />正确转换方法:
QPixmap pixmap = Qpixmap::fromImage(image.scaled(picSize));<br />
buttonImg->setIcon(pixmap);`
QImage image=pixmap.toimage();
展示效果修改
【链接】QImage与QPixmap加载图片效果【两者的区别】_t
https://blog.csdn.net/linpuliang/article/details/38725339?utm_medium=distribute.pc_relevant.none-task-blog-utm_term-2&spm=1001.2101.3001.4242