【QT】对话框打开图像并用QPixmap显示

绘图设备是指继承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

【QT】对话框打开图像并用QPixmap显示的相关文章

基于gtk的imshow:用stb_image读取图像并用gtk显示

在前面一篇,已经能够基于gtk读取图像并显示.更前面的一篇:基于GDI的imshow:使用stb_image读取图像并修正绘制,通过stb_image读取图像并通过GDI显示图像,实现了一个imshow.本篇则在这两基础上,利用stb_image读取图像,并利用gtk显示,初步实现一个基于gtk的imshow. 首先是找到一份代码,从指定的buffer创建gtk的image并显示(参考1).然后用stb image读取,先前我进行了封装,得到fc image是和opencv兼容的bgr格式.然而

解决问题1:可以从桌面显示到FORM MFC/HALCON混合编程系列一_打开图像_简单处理_

没法爱上新浪  转载:http://blog.sina.com.cn/s/blog_812e326f010110og.html 从图1到图2 图1(在桌面显示了) open_window(0,0, Width/2, Height/2,0,"visible","",&WindowHandle); 更改为: Hlong MainWndID =(Hlong) m_hWnd; open_window(0,0, Width/2, Height/2,MainWndID,

QT开发(二十)——QT对话框

QT开发(二十)--QT对话框 一.对话框简介 对话框是与用户进行简短交互的顶层窗口 QDialog是QT中所有对话框窗口的基类,QDialog继承于QWidget,是一种容器型的组件,是定制了窗口样式的特殊QWidget. QDialog作为一种专用的交互窗口,不能作为子部件嵌入其他容器中. 二.对话框类型 对话框类型分为模态对话框和非模态对话框. 1.模态对话框 模态对话框显示后无法与父窗口进行交互,是一种阻塞式的对话框,使用QDialog::exec()函数调用. 模态对话框一般在栈上创建

OpenNI2获取华硕XtionProLive深度图和彩色图并用OpenCV显示

使用OpenNI2打开XtionProLive时有个问题,彩色图分辨率无论如何设置始终是320*240,深度图倒是可以设成640*480,而OpenNI1.x是可以获取640*480的彩色图的. 彩色图 配准到彩色图后的深度图 1:1融合图 代码: #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #

OpenNI1.5获取华硕XtionProLive深度图和彩色图并用OpenCV显示

华硕XtionPro类似Kinect,都是体感摄像机,可捕捉深度图和彩色图, 详细参数见:http://www.asus.com.cn/Multimedia/Xtion_PRO_LIVE/specifications/ 实验设定的深度图和彩色图大小都是640*480,如下: 彩色图 未配准时的深度图 配准到彩色图后的深度图 深度图配准到彩色图后的1:1融合图 彩色图配准到深度图后的1:1融合图 代码: #include <stdlib.h> #include <iostream>

QT 对话框中动态显示系统时间

QT 对话框中动态显示时间 #include <QDateTime> #include <QTimer> Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); //显示时间 QTimer *timer = new QTimer(this); displayTime(); connect(timer, SIGNAL(timeout()), this,

【Qt编程】系统托盘的显示

本文主要讨论Qt中的系统托盘的设置.系统托盘想必大家都不陌生,最常用的就是QQ.系统托盘以简单.小巧的形式能让人们较快的打开软件.废话不多说,下面开始具体介绍. 首先,新建一个Qt Gui项目,类型选择QMainWindow,类名也选择默认的mainwindow.这时,工程项目中就有3个文件(界面文件不用管):mainwindow.h mainwindow.cpp main.cpp.然后,分别修改3个文件如下: 1.mainwindow.h #ifndef MAINWINDOW_H #defin

OpenCV3.0+MFC+VS2010打开图像

最近刚开始学OpenCV3.0结合MFC进行图像处理,做了一个非常简单的OpenCV3.0在VS2010中建立一个MFC程序打开图片的小程序,具体过程如下. [1]首先按照链接中的步骤 http://blog.csdn.net/poem_qianmo/article/details/19809337,在VS2010中配置好OpenCV3.0. [2]打开VS2010,新建一个MFC程序,如下图所示: [3]点击下一步: [4]选择设置如下: [5]点击"完成",显示如下界面: [6]在

Js打开网页后居中显示

使用JavaScript定义打开网页后居中显示,并可为窗口设置大小,使用“window.open”方法打开新窗口:先来看完整的代码及调用方法: <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>打开居中的窗口</title> <script language="javascript"> //参数-url:要打开的网站,winname:打开后