图像打印代码如下:
void ImageProcessor::ShowPrintImage()
{
QPrinter printer;
QPrintDialog printDialog(&printer,this);
if(printDialog.exec())
{
QPainter painter(&printer);
QRect rect=painter.viewport();
QSize size=img.size();
size.scale(rect.size(),Qt::KeepAspectRatio);
painter.setViewport(rect.x(),rect.y(),size.width(),size.height());
painter.setWindow(img.rect());
painter.drawImage(0,0,img);
}
}
解释:
(1)、打印图像实际上是在一个QPaintDevice中画图,与平常在QWidget、QPixmap和QImage中画图相同,都是创建一个QPainter对象进行画图,只是打印使用的是QPrinter,QPrinte本质上也会一个绘图设备QPaintDevice。
(2)、Qpainter painter(Qprinter):创建一个QPainter对象,并指定绘图设备为一个QPrinter对象。
(3)、QRectrect=painter.viewport():获得QPainter对象的视口矩形区域;
(4)、Sizesize=img.size():获得图像大小
(5)、size.scale(rect.size(),Qt::KeepAspectRatio)、painter.setViewport(rect.x(),rect.y(),size.width(),size.height())按照图形的比例大小重新设置视口矩形区域;
(6)、painter.setWindow(img.rect())设置QPainter窗口大小为图像的大小。