很多人问,怎么快捷的在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 }