【QT】對話框打開圖像並用QPixmap顯示


繪圖設備是指繼承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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM