《Qt打印功能总结》

来源:互联网 发布:网络汇聚怎么做 编辑:程序博客网 时间:2024/06/15 13:36

Qt提供了强大的打印功能,我们可以使用QPainter直接在一个QPrinter的实例中进行打印,对于文件的输出我们有两种方式可以选择,一种是利用QPrinterDialog来指定打印机及打印格式;第二种方法是利用代码设置QPrinter的输出格式,纸张尺寸,并利用QFileDIalog来选择输出路径。

第一种方法:

QPrintDialog printDialog(printer, parent);if (printDialog.exec() == QDialog::Accepted) {    // print ...}

第二种方法:

    QPrinter printer;    printer.setPaperSize(QPrinter::A4);//设置纸张大小    printer.setPageSize(QPageSize(QSize(1200,800)));    //设置页面大小     printer.setOutputFormat(QPrinter::PdfFormat);//设置输出格式    QString file_path = QFileDialog::getSaveFileName(this, tr("Export PDF"),    //输出路径选择对话框                               "/home/jana/untitled.pdf",                               tr("PDF Files (*.pdf)"));    if(!file_path.isEmpty())    {        if(QFileInfo(file_path).suffix().isEmpty())            file_path.append(".pdf");        printer.setOutputFileName(file_path);//设置输出路径        //开始打印    }


当我们想打印界面上的控件时,我们有几种方法:一是利用QWidget的render接口将控件画到一个QPainterDevice或者QPainter上,比如我们可以直接将控件利用QPainter画到打印机上,将QWidget绘制为QPixmap或者QImage,这时我们可以将其缩放后利用QPainter输出到打印机上。第二种我们可以使用QWidget::grab将界面抓取保存为QPixmap,与render相比,grab可以随意抓取我们感兴趣的部分,更为灵活,而render对于单个QWidget的绘制更为简单。

最后总结以下打印的流程:新建一个打印机实例QPrinter-->利用QFileDialog结合QPrinter成员函数设置打印参数或者利用QPrinterDialog设置参数,并选择输出路径-->实例化一个QPainter对象,使用painter.begin(&printer)开始在打印机上绘图-->利用render或者grab绘制QWidget或者任何感兴趣的区域,并可以利用QPainter自定义绘图-->绘制完成后调用painter.end()结束绘制。

原创粉丝点击