1. 在 .pro中添加:
QT += printsupport
  1. 在设计模式界面拖入一个 Text Edit,在mainwindow.h文件添加类的前置声明:
class QPrinter;
  1. 在mainwindow.h添加槽声明:
private slots://打印文档void doPrint();void doPrintPreview();void printPreview(QPrinter *printer);void createPdf();
  1. 在mainwindow.cpp文件中添加头文件:
#include <QPrinter>
#include <QPrintDialog>
#include <QPrintPreviewDialog>
#include <QFileDialog>
#include <QFileInfo>
#include <QAction>
  1. 在构造函数中定义:建立QPrinter类对象,它代表一个打印设备,创建一个打印话框,如果编辑器中有选中区域,则打印该区域,否则打印整个页面。
    setWindowTitle("打印文档");setWindowIcon(QPixmap(":/new/prefix1/images/file.png"));QAction *action_print=new QAction(tr("打印"),this);QAction *action_printPreview=new QAction(tr("打印预览"),this);QAction *action_pdf=new QAction(tr("生成pdf"),this);connect(action_print,SIGNAL(triggered()),this,SLOT(doPrint()));connect(action_printPreview,SIGNAL(triggered()),this,SLOT(doPrintPreview()));connect(action_pdf,SIGNAL(triggered()),this,SLOT(creatPdf()));ui->toolBar->addAction(action_print);ui->toolBar->addAction(action_printPreview);ui->toolBar->addAction(action_pdf);
  1. 使用打印对话框来进行打印预览,关联它的paintRequsted()信号到自定义的槽上,在槽中调用编辑器的打印函数。

    id MainWindow::createPdf()
    {QString fileName=QFileDialog::getSaveFileName(this,tr("导出PDF文件"),QString(),"*.pdf");if(!fileName.isEmpty()){if(QFileInfo(fileName).suffix().isEmpty())fileName.append(".pdf");//如果文件后缀为空,则默认使用.pdfQPrinter printer;printer.setOutputFormat(QPrinter::PdfFormat);//指定输出格式为pdfprinter.setOutputFileName(fileName);ui->textEdit->print(&printer);}
    }
    
  2. 全部代码(mainwindow.cpp):

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QPrinter>
#include <QPrintDialog>
#include <QPrintPreviewDialog>
#include <QFileDialog>
#include <QFileInfo>
#include <QAction>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);setWindowTitle("打印文档");setWindowIcon(QPixmap(":/new/prefix1/images/file.png"));QAction *action_print=new QAction(tr("打印"),this);QAction *action_printPreview=new QAction(tr("打印预览"),this);QAction *action_pdf=new QAction(tr("生成pdf"),this);connect(action_print,SIGNAL(triggered()),this,SLOT(doPrint()));connect(action_printPreview,SIGNAL(triggered()),this,SLOT(doPrintPreview()));connect(action_pdf,SIGNAL(triggered()),this,SLOT(creatPdf()));ui->toolBar->addAction(action_print);ui->toolBar->addAction(action_printPreview);ui->toolBar->addAction(action_pdf);
}MainWindow::~MainWindow()
{delete ui;
}//打印
void MainWindow::doPrint()
{QPrinter printer;//创建打印机对象QPrintDialog dlg(&printer,this); //创建打印对话框//如果编辑器中由选中区域,则打印选中区域if(ui->textEdit->textCursor().hasSelection())dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);if(dlg.exec()==QDialog::Accepted){//如果在对话框中按下打印按钮//则执行打印操作ui->textEdit->print(&printer);}
}//打印预览
void MainWindow::doPrintPreview()
{QPrinter printer;QPrintPreviewDialog preview(&printer,this);//创建打印预览对话框//当要生成预览界面时,发射paintRequested()信号connect(&preview,&QPrintPreviewDialog::paintRequested,this,&MainWindow::printPreview);preview.exec();
}void MainWindow::printPreview(QPrinter *printer)
{}void MainWindow::createPdf()
{QString fileName=QFileDialog::getSaveFileName(this,tr("导出PDF文件"),QString(),"*.pdf");if(!fileName.isEmpty()){if(QFileInfo(fileName).suffix().isEmpty())fileName.append(".pdf");//如果文件后缀为空,则默认使用.pdfQPrinter printer;printer.setOutputFormat(QPrinter::PdfFormat);//指定输出格式为pdfprinter.setOutputFileName(fileName);ui->textEdit->print(&printer);}
}

Qt 打印文档(PDF)相关推荐

  1. python连接打印机打印文档、图片、pdf文件等

    引言 python连接打印机进行打印,可能根据需求的不同,使用不同的函数模块. 如果你只是简单的想打印文档,比如office文档,你可以使用ShellExecute方法,对于微软office的文档.p ...

  2. python打印机打印图片_python连接打印机实现打印文档、图片、pdf文件等功能

    引言 python连接打印机进行打印,可能根据需求的不同,使用不同的函数模块. 如果你只是简单的想打印文档,比如office文档,你可以使用ShellExecute方法,对于微软office的文档.p ...

  3. 票据打印, 账单打印, 标签打印, 文档打印, 条码打印, 批量打印, 包装纸打印与设计,可变数据打印打印,发布,VC++源代码组件库解决方案...

    票据打印, 账单打印, 标签打印, 文档打印, 条码打印, 批量打印, 包装纸打印与设计,可变数据打印打印,发布,VC++源代码组件库解决方案 使用E-Form++源码库开发任何标签,票据,文档,条码 ...

  4. java打印文档_从Java应用程序打印文档?

    我正在尝试创建一个能够直接从UI打印文档的Java UI . 我能够创建和使用Javax ServiceUI,但是当从ServiceUI中选择"Print"并调用DocJob上的p ...

  5. QTWebkit中的webkit/qt/api文档

    QTWebkit中的webkit/qt/api文档 概述 该目录下的文件均以前前缀qweb开头,主要用于支持前端的实现.核心的类为:qwebview.qwebpage.qwebframe等三个类.这三 ...

  6. GdPicture.NET SDK Crack,编辑、捕获或打印文档

    GdPicture.NET SDK Crack,编辑.捕获或打印文档 GdPicture.NET SDK是一个可靠的工具,您可以使用它与各种开发环境和编程语言一起管理图片或文档.该实用程序可以方便地查 ...

  7. WPS批量设置及批量打印文档

    WPS批量设置及批量打印文档 背景:我们需要一次打印多份文档,且文档页边距有统一的特殊要求,不能使用默认页边距参数,需要手动设置,如果每打印一份文档都要手动设置打印时的页边距,那么既费时又费力.这种情 ...

  8. 说说双面打印文档自动扫描后的页面重组

    最近阿三在中印西部边界的班公湖和加勒万河谷一带比较得瑟,结果挨了一顿胖揍,微博群里一片双面打印,3D打印的呼声.真所谓"吹最牛的逼,挨最毒的打". 下面我要谈的可是真正的双面打印文 ...

  9. Golang 见证 godoc 的强大(生成API文档,打印文档)

    Golang 见证 godoc 的强大(生成API文档,打印文档) 文章目录 Golang 见证 godoc 的强大(生成API文档,打印文档) 一.godoc 介绍 二.godoc 安装 ① 系统环 ...

  10. Qt帮助文档使用方法

    Qt 帮助文档非常细致而全面,应有尽有,是非常不错的自学教材.因为 Qt 帮助文档太多,所以难以都翻译成中文,即使翻译了一部分,翻译花的时间太多,翻译更新的时效性也难以保证,所以还是得看英文帮助为主. ...

最新文章

  1. 剑指offer_第20题_包含min函数的栈_Python
  2. Android登录拦截器实现方式(一)
  3. AGC030D - Inversion Sum
  4. 如何一键部署项目、代码自动更新
  5. MarkDown语言
  6. html-css样式表
  7. Java中的JDBC教程
  8. 火热抢购(双11)双12通用海报设计素材,PSD分层!
  9. CAP以及分区容错性的含义
  10. 九款Web服务器性能压力测试工具
  11. 09 自动发表博客评论
  12. 通过Ruby on Rails中的关系调试Has_Many
  13. regedit是什么意思_regedit用法_regedit参数_reg的注册与反注册
  14. 管理kde wallet
  15. 基数排序——多关键字排序(MSD/LSD)以及链式基数排序
  16. python3中seed函数的用法
  17. 国产自主内存产能发展迅猛
  18. 洛谷P2698 [USACO12MAR]Flowerpot S
  19. 帆软report分析报表修改控件样式
  20. proguard学习

热门文章

  1. linux修改系统语言为中文
  2. php 755,chmod 命令——chmod 755与 chmod 4755区别_PHP教程
  3. 红外倒车雷达原理图_超声波倒车雷达电路图及原理分析
  4. 智力题解题报告 No.4 9个点10个线
  5. 我们不用开浏览器也能上BBS——带你体验telnet的魅力(zz) (转载)
  6. SQL查询语句精华大全
  7. PSV微豆瓣FM v0.1.0
  8. netbean java_netbean 生成 Java 桌面数据库应用程序
  9. DevExpress 设计Ribbon界面
  10. 电气与计算机哪个好考吗,电气工程师难考吗 含金量怎么样