添加头文件
#include <QPrintDialog>
#include <QPrinter>
#include <QPainter>
Qt5中将Qprinter、QPrintDialog等类归入到了printsupport模块中,如果在项目中引入了上面的两个头文件,还需要在工程文件(.pro文件)中加入QT+=printsupport,否则编译会出错。
打印文本
void ImgProcessor::ShowPrintText()
{
QPrinter printer; //新建一个QPrinter对象
QPrintDialog printDialog(&printer,this); //(a)
if(printDialog.exec()) //(b)
{
//获得QTextEdit对象的文档
QTextDocument *doc =showWidget->text->document();
doc->print(&printer); //打印
}
}
打印图像
打印图像实际上是在一个QPaintDevice中画图,与平常在QWidget、QPixmap和QImage中画图相同,都是创建一个QPainter对象进行画图,只是打印使用的是QPrinter,QPrinter本质上也是一个绘图设备QPaintDevice。
void ImgProcessor::ShowPrintImage()
{
QPrinter printer; //新建一个QPrinter对象
QPrintDialog printDialog(&printer,this); //(a)
if(printDialog.exec()) //判断打印对话框显示后用户是否单击“打印”按钮
{
QPainter painter(&printer); //指定绘图设备为一个QPrinter对象
QRect rect =painter.viewport(); //获得QPainter对象的视图矩形区域
QSize size = img.size(); //获得图像的大小
/* 按照图形的比例大小重新设置视图矩形区域 */
size.scale(rect.size(),Qt::KeepAspectRatio);
painter.setViewport(rect.x(),rect.y(),size.width(),size.height());
painter.setWindow(img.rect()); //设置QPainter窗口大小为图像的大小
painter.drawImage(0,0,img); //打印图像
}
}