一、要实现打印功能,首先要在pro文件中加上 QT += printsupport 并且需要重新qmake

二、Qt提供了QPrintPreviewDIalog 类,所以打印功能可以直接通过此对话框实现

三、要唤出 QPrintPreviewDialog 对话框,需要使用

connect(&previewDialog,SIGNAL(paintRequested(QPrinter*)),this,SLOT(Preview(QPrinter*) ) );

其中,previewDialog就是预先创建的QPrintPreviewDialog 对象,SIGNAL:paintRequest是预览请求信号,我们可以通过previewDialog.exec()唤出Dialog来发出这个信号

SLOT中的 preview() 是自己定义的函数,内容如下:

void MainWindow::Preview(QPrinter *printer)
{textEdit->print(printer);
}

它可以将texEdit中的内容送入print 中,这样预览界面就能显示内容了

具体的代码如下:

1.建立QTWidgetApplication

2.在.pro文件中添加

QT += printsupport

3.在mainwindows.h添加

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPrinter>
#include <QFileDialog>
#include <QTextEdit>
#include <QPushButton>
#include <QPrintPreviewDialog>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;QTextEdit *textEdit;QPushButton *pushButton;QPushButton *pushButton_printPreview;QPrintPreviewDialog *printPreview;
private slots:void CreatPdf();void PrintPreview();void Preview(QPrinter *printer);
};#endif // MAINWINDOW_H

在mainwindow.cpp中添加如下代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPrinter>
#include <QPainter>
#include <QTableView>
#include <QStandardItemModel>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);this->setMaximumSize(800,800);this->setMinimumSize(800,800);pushButton = new QPushButton(tr("生成PDF"),this);pushButton_printPreview = new QPushButton(tr("打印预览"),this);textEdit = new QTextEdit(this);pushButton->setGeometry(QRect(100,100,100,25));pushButton_printPreview->setGeometry(QRect(208,100,100,25));textEdit->setGeometry(QRect(100,128,400,500));connect(pushButton,SIGNAL(clicked()),this,SLOT(CreatPdf()) );connect(pushButton_printPreview,SIGNAL(clicked()),this,SLOT(PrintPreview()) );}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::CreatPdf()
{QPrinter printer;QFileDialog fileDialog;QString str = QFileDialog::getSaveFileName(this,tr("Save Text"),"/",tr("Text Files (*.pdf)"));printer.setOutputFormat(QPrinter::PdfFormat);printer.setPageSize(QPrinter::A4);printer.setOutputFileName(str);textEdit->print(&printer);
}void MainWindow::PrintPreview()
{QPrinter printer;QPrintPreviewDialog previewDialog(&printer,this);connect(&previewDialog,SIGNAL(paintRequested(QPrinter*)),this,SLOT(Preview(QPrinter*) ) );previewDialog.exec(); //打印对话框显示,paintRequest触发
}void MainWindow::Preview(QPrinter *printer)
{textEdit->print(printer);
}

在main.cpp中添加如下代码:

#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

QT实现打印预览及生成Pdf功能相关推荐

  1. smartform 打印预览时转PDF查看

    smartform 打印预览时,经常会有分页以及其他等等原因,预览的效果跟最后打印结果有些出入.为了方便查看预览时的数据,可以输入Tcode "PDF!",就会把当前预览的数据转换 ...

  2. vue项目实现打印预览、生成(导出)文档功能

    这个功能其实也是自己学习到的,做完也有一段时间了,一直想记录总结一下,但一直没时间,今天总算闲了一点,趁一大早活还没找上门来,赶紧抓住时间鸭! 1.打印预览 打印预览说白就是实现快速跳转新页面预览信息 ...

  3. html打印预览 分页,有分页功能的WEB打印_js

    看看 .Noprint{display:none;} .PageNext{page-break-after: always;} .tdp { border-bottom: 1 solid #00000 ...

  4. Qt实现Qchart的打印和打印预览的几种方法

    实现打印预览和打印,是挺常用的功能.把其他一些内容如QTextBrowser或者QEditText打印和打印预览是容易的,因为它们都自带了print方法,可以直接输出到printer.这里介绍下Qt实 ...

  5. 动态生成的html页面转pdf并且打印预览

    文章说明 程序的功能: 通过js动态生成html页面并将该页面传送到后台转成pdf,再通过前台将pdf打印预览 先大约讲述一下具体实现过程 1.在js页面将你自己需要拼装好html页面通过ajax传到 ...

  6. SAP SmartForms PDF Preview Test 打印预览生成PDF文件

    SAP SmartForms PDF Preview Test 打印预览生成PDF文件 *&-------------------------------------------------- ...

  7. QT实现保存PDF、打印预览、打印的功能

    目标: 1.实现文字.图像保存为pdf并在保存后自动打开的功能: 2.实现文字.图像打印预览的功能 3.实现文字.图像打印的功能 平台: VS 2019 + QT5.15.2 需要的类: QPaint ...

  8. java web pdf 打印预览_java原装代码完成pdf在线预览和pdf打印及下载

    前提准备: 1. 项目中至少需要引入的jar包,注意版本: a) core-renderer.jar b) freemarker-2.3.16.jar c) iText-2.0.8.jar d) iT ...

  9. PHP打印预览PDF

    functioncreatePdfFile($frontData){/*新建一个pdf文件:Orientation:orientation属性用来设置文档打印格式是"Portrait&quo ...

最新文章

  1. linux各种小程序源码,Linux中的小程序—— 进度条
  2. 大话数据结构 java源代码_大话数据结构(八)Java程序——双向链表的实现
  3. java中的23中设计模式
  4. GitHub vs. Bitbucket 不只是功能不同
  5. 【详解!思路清晰】1095 解码PAT准考证 (25分)
  6. TensorFlow学习笔记(十)tf搭建神经网络可视化结果
  7. 模板:Link Cut Tree(LCT)
  8. 远程桌面端口修改批处理
  9. ajax 使用方法简述
  10. linux so获取自己路径,linux下so获得自己文件位置的路径
  11. 独家揭秘:用友云的新打算
  12. 财富自由之路-博多费舍尔
  13. 解决网页文字无法选中或复制
  14. 在服务器 和 虚拟机中 查看代码 samba source insight
  15. Unity3D——第一人称FPS生存游戏(resident zombies)
  16. Broadcasts在Android7.0以及Android8.0中的变更
  17. 一起来学lua脚本第一节
  18. java设计模式六大原则之场景应用分析
  19. Android 使用uInput模拟手柄设备
  20. SSRF 漏洞学习实战

热门文章

  1. python 爬取TripAdvisor评论(曾经可以爬下来,但是似乎网页结构改了,爬不下来了)
  2. CODESYS开发教程4-总线伺服控制
  3. 新手学Python之学习官网教程(六: Modules)
  4. 【Python入门教程】教你如何10分钟入门Python!(超详细)
  5. InVEST模型 | HAbitat quality模块计算生境质量
  6. Benji Bananas 与 ApeCoin 一起迈向边玩边赚
  7. ijl15.dll丢失修复工具
  8. 服务器自检后显示scsi,SCSI RAID卡常见故障分析及BIOS升级指导
  9. 成功解决java报错:Implicit super constructor XX() is undefined. Must explicitly invoke another constructor.
  10. java+web+股票图表_基于Echarts的股票K线图展示