首先需要在.pro文件中加入打印模块
QT += printsupport # 打印模块
打印及打印预览实现
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QtPrintSupport/QPrintPreviewDialog>
void MainWindow::docPrint()
{
QPrinter pter(QPrinter::HighResolution);//打印机像素使用的是选中的打印机像素
QPrintDialog *ddlg = new QPrintDialog(&pter,this);
if(activeChildWnd())
ddlg->setOption(QAbstractPrintDialog::PrintSelection, true);
ddlg->setWindowTitle("打印文档");
ChildWnd* childWnd = activeChildWnd();
if(ddlg->exec() == QDialog::Accepted)
childWnd->print(&pter);
delete ddlg;
}
void MainWindow::docPrintPreview()
{
QPrinter pter(QPrinter::HighResolution);//打印机
QPrintPreviewDialog preview(&pter,this);
connect(&preview, SIGNAL(paintRequested(QPrinter*)),
this,SLOT(printPreview(QPrinter*)));
preview.exec();//调用预览窗口
}
void MainWindow::printPreview(QPrinter *printer)
{
activeChildWnd()->print(printer);//activeChildWnd()返回当前文档编辑子窗口
}
以下为官方对QPrintDialog、 OPrintPreviewDialog对象的描述
QPrintDialog
该对话框允许用户更改与文档相关的设置,如纸张大小和方向、打印类型(彩色或灰度)、页面范围以及要打印的份数。还提供了控件,使用户能够从可用的打印机中进行选择,包括任何已配置的网络打印机。通常,QPrintDialog对象是用一个QPrint对象构造的,并使用exec()函数执行。
QPrintDialog printDialog(printer, parent);
if (printDialog.exec() == QDialog::Accepted) {
// print ...
}
OPrintPreviewDialog:
在现有应用程序中使用OPrintPreviewDialog非常简单:
1.创建OPrint Preview对话框。
您可以使用现有的QPrinter对象构造一个OPrintPreviewDialog,也可以让QP rint preview Dialog为您创建-个OP rint Dialog,它将成为系统默认打印机。
2.将paintRequested()信号连接到插槽。
当对话框需要生成一组预览页面时,将发出paintRequested()信号。实际打印时可以使用与生成预览时完全相同的代码,包括调用QPrinter::newPage()在预览中开始一个新页面。将插槽连接到paintRequested()信号,在该信号中绘制传递到插槽中的OPrinter对象。
3.调用 exec()。
调用OPrintPreviewDialog::exec()以显示预览对话框。