很多人问,怎么快捷的在Qt里面显示图像。
 
个人以为,在Qt里面你的widget上显示图像的最简单方法就是用QImage和QPaint。方法如下。
 
假设我们现在已经有了一个QImage的object。怎么有的,这里不管。
 
QImage *pCurImage;
首先,我们要定义两个区域,一个是widget里面的显示区域,我们把它叫做DisplayDestArea。另一个是image的区域,我们叫它DisplaySourceArea。在qt4里用QRectF来定义这两个区域。为什么?喜欢。
 
//显示区域为左上角坐标(130, 220),区域宽度640高度480
QRectF DisplayDestArea = QRectF(130.0, 220.0, 640.0, 480.0); //显示全副图像,你当然也可以显示图像的一部分 QRectF DisplaySourceArea = QRectF(0, 0, pCurImage->width(), pCurImage->height());
 
然后呢?显示啊。
首先,定义一个QPainter
 
QPainter newPainter(this);
 
然后呢?
newPainter.drawImage(DisplayDestArea, *pCurImage, DisplaySourceArea);
 
编译,通过,看看效果。。。
没有?!
对,不奇怪,如果你没有把painter部分放到paintEvent()里面的话。所以,我们应该要做的另一件事就是:重载paintEvent函数。
首先,在类的声明里面说明要重载的函数:
 
void paintEvent(QPaintEvent *event);
 
然后,当然就是在合适位置放置代码:
1 void PreviewWindow::paintEvent(QPaintEvent *event)
2 {
3   QRectF DisplayDestArea = QRectF(130.0, 220.0, 640.0, 480.0);
4   QRectF DisplaySourceArea = QRectF(0, 0, pCurImage->width(), pCurImage->height());
5   QPainter newPainter(this);
6   newPainter.drawImage(DisplayDestArea, *pCurImage, DisplaySourceArea);
7 }
现在呢?呵呵,搞定。
posted on 2012-03-24 15:26  风行雪舞  阅读(805)  评论(0编辑  收藏  举报
无觅相关文章插件,快速提升流量