繪圖設備是指繼承QPaintDevice的子類,可以使用QPainter直接在其上面繪制圖形,Qt一共提供了四個這樣繼承QPaintDevice的繪圖設備類。
分別是QPixmap、QBitmap、QImage和 QPicture。
#include <QPixmap>
//打開文件對話框 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繪制效果是最好的(第一種代碼的方式)。
【轉載自】
Qt中圖像的顯示與基本操作 - romi - 博客園 https://www.cnblogs.com/Romi/archive/2012/03/14/2396533.html
QPixmap用法總結 - doupi2008的專欄 - CSDN博客 https://blog.csdn.net/doupi2008/article/details/44960003
顯示圖像的鋪滿設置。
qt 中 QPixmap 類的使用及用 QLabel 顯示圖像-keanight的博客 - CSDN博客 https://blog.csdn.net/keanight/article/details/79150637