Qt5中的Qt Print Support 模块提供了对打印的支持。最简单的,只需要使用一个QPrinter类和一个打印对话框QPrintDialog类就可以完成文档的打印操作。
首先,需要在.pro文件中加上
QT += printsupport
添加打印需要用到的函数
void doPrint()
void doPrintPreview();
void printPreview(QPrinter *printer);
void createPdf();
对于打印函数,先建立QPrinter类对象,它代表一个打印设备,然后创建了一个打印对话框,如果编辑器中有选中的区域,则打印该区域,否则打印整个页面。
void MainWindow::doPrint()
{
QPrinter printer;
QPrintDialog dialog(&printer,this);
if(textEidt->textCursor().hasSelection())
dialog.addEnableOption(QAbstractPrintDialog::PrintSelection);
if(dialog.exec()==QDialog::Accepted){
textEdit->print(&printer); //执行打印操作
}
}
对于预览对话框,要关联它的paintRequested()信号,就是设置完后按下打印按钮时会发射的信号
void MainWindow::doPrintView()
{
QPrinter printer;
QPrintPreviewDialog preview(&printer,this);
connect(&preview,&QPrintPreviewDialog::paintRequested,this,&MainWindow::printPreview);
preview.exec();
}
void MainWindow::printPreview(QPrinter *printer)
{
textEdit->print(printer);
}
对于生成PDF文档,只需要指定打印成PDF格式即可
void MainWindow::createPdf()
{
QString fileName=QFileDialog::getSaveFileName(this,tr("导出PDF文件"),QString(),"*.pdf");
if(!fileName.isEmpty()){
if(QFileInfo(fileName).suffix().isEmpty())
fileName.append(".pdf");
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName(fileName);
textEdit->print(&printer);
}
}