绘图设备是指继承QPaintDevice的子类,可以使用QPainter直接在其上面绘制图形,Qt一共提供了四个这样继承QPaintDevice的绘图设备类。
分别是QPixmap、QBitmap、QImage和 QPicture。
//打开文件对话框 QString lastPath="D:/Englishpath/QTprojects/DATA/videoData"; fileName = QFileDialog::getOpenFileName(this, tr("打开文件"), lastPath); if(fileName.isEmpty()) { return; } else { QImage* img=new QImage; if(! ( img->load(fileName) ) ) //加载图像 { QMessageBox::information(this, tr("打开图像失败"), tr("打开图像失败!")); delete img; return; } ui->d_label->setPixmap(QPixmap::fromImage(*img)); }
或者直接最简单,
//打开文件对话框 QString lastPath="D:/Englishpath/QTprojects/DATA/videoData"; fileName = QFileDialog::getOpenFileName(this, tr("打开文件"), lastPath); QPixmap p; p.load(fileName); ui->d_label->setPixmap(p);
区别是:
QPixmap依赖于硬件,QImage不依赖于硬件。
QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的。
当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍。
所以一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。QPixmap绘制效果是最好的(第一种代码的方式)。
【转载自】
QPixmap用法总结 - doupi2008的专栏 - CSDN博客 https://blog.csdn.net/doupi2008/article/details/44960003
原文地址:https://www.cnblogs.com/wxl845235800/p/10769687.html
时间: 2024-10-08 07:57:16