QImage的显示

来源:互联网 发布:xenomai编程笔记 编辑:程序博客网 时间:2024/04/30 17:40

因为想利用QT的gui在arm上显示的缘故,因此开始接触了QT。最近,用QT在弄一个显示图片的小程序。程序如下:

#include <QtGui/QApplication>

#include "mainwindow.h"

#include "qimage.h"

#include "qlabel.h"

#include "qpixmap.h"

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

MainWindow w;

QLabel* label=new QLabel("",0);

QImage img;

img.load("E:/Image/lena.jpg");

QPixmap mp;

mp.fromImage(img);

label->setPixmap(mp);

label->show();

return a.exec();

}

因为要对图像进行操作,所以不得不利用QImage这个类,需要显示所以还得利用QPixmap这个类。

从上面的程序来看,似乎没什么问题。大体思路是先把lena.jpg给了Qimage,然后在把QImage 转为QPixmap,接着就可以显示了。

这个程序诚如所想的那样,编译没有什么问题,但是却无法显示lena这张图像。这让我很郁闷。我检查程序一遍又一遍,但是都没有问题。没办法,我上谷歌搜了一下,大多情况都是解说QImage,QPixmap,QBitmap,Qpicture的关系。并没有找到我想要的答案。我也到CV群里去问了一下原因,同时也把代码发到群上去了。所幸,群里热心的“冷血枪手”告诉我可能的原因是由于编译库的错误。因为,我只装了一个QT Creator, 并没有装QT库,所以我也觉有可能是QT连接库的原因。但是,当我直接利用QPixmap map(my image path name)的时候,却是可以正常显示的。按理说如果是链接库的原因的话,GUI是不能正常工作的。但是我还是不确定,是不是GUI真的没问题。于是乎索性把QT库给装了。同时,修改INCLUDEPATH 和LIBS,这下链接库:动态静态都有了,应该没钱恩提了吧。把上面的程序运行了一遍,但是结果还是一样,图像还是不能正确显示,这令我很沮丧。还是不甘心,我又有看了一下帮助文档。把QImage,QPixmap这两个类看了一遍,还是没发现问题的所在。后来,我又到谷歌in English上去搜了一下,偶然看到别人写的显示代码label->setPixmap(QPixmap::fromimage(img));我才恍然大悟。回去仔细看了一下fromimage这个函数,才发现上面的程序的问题所在。

QPixmap mp;

mp.fromImage(img);

img并没有转换给mp,上面的mp根本就没有初始化,而mp.fromimage仅仅是表示调用了这么一个转换函数,而转换的结构并未赋给任何值,因此mp仍然是一个空的对象,所以显示不出图像了。想通这一点,把这句程序

"

mp.fromImage(img);

"

改为

mp=mp.fromimage(img);

运行结果正确。

通过这个小程序,让我再一次觉得自己的基础还是不行,对C++的理解还是不够熟悉,同时缺乏一种迅速定位问题所在的能力,态度还不够认真仔细。

QImage的显示 - xiaofevgtech - xiaofevg的tech博客

 




FROM: http://xiaofevgtech.blog.163.com/blog/static/18614950820114289810425/

0 0
原创粉丝点击