Qt打印

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);
        }
}

猜你喜欢

转载自blog.csdn.net/weixin_38893389/article/details/81190079
今日推荐