在QT中用QLabel显示一张图像及QImage/QPixmap/QBitmap/QPicture

来源:互联网 发布:电纸书 知乎 编辑:程序博客网 时间:2024/05/22 05:24

       在QT中显示图像,是使用OpenCV联合QT进行机器视觉项目的开发的第一步。首先需要弄清楚的是QT的四个图像类QImage/QPixmap/QBitmap/QPicture。

       QPixmap是专门为绘图而生,当需要绘制图片时候需要使用QPixmap。为它是存储在服务器端,往QPixmap上绘图比较慢,但显示它则比较快。但在Windows平台上则是是一样的,因为它们都存储在客户端。

       QImage为I/O,为图片像素访问及修改而设计的,如果你想访问图片的像素或者修改图片的像素,则需要使用QImage,或者借助于QPainter来操作像素。在X11, Mac 以及 Symbian平台上,QImage: 因为它是存储在客户端,往QImage上绘图比较快,但显示它则比较慢。

       QBitmap只是一个继承于QPixmap的简单类,它可以确保图片深度为1。

       QPicture是一个绘画设备类,它记录了并可以重演QPainter的命令。你可以使用QPainter的begin()方法,指定在QPicture上绘图,使用end()方法结束绘图,使用QPicture的save()方法將QPainter所使用过的绘图指令存至档案。


方法一:

void Dialog::on_ButtonPic_clicked(){    QPixmap img;    img.load("C:/Users/SLJ/Desktop/12.bmp");    ui->labelPic->clear();    ui->labelPic->setPixmap(img);}


方法二:

void Dialog::on_ButtonPic_clicked(){    QImage image;    image.load("C:/Users/SLJ/Desktop/12.bmp");    ui->labelPic->clear();    ui->labelPic->setPixmap(QPixmap::fromImage(image));}


显示效果如下图所示: