Qt Print Support
模块提供了对打印的支持。最简单的,只需使用一个QPrinter
类和一个打印对话框QPrintDialog
类就可以完成文档的打印操作
本节简单介绍打印文档,打印预览和生产pdf文档
新建Qt Widget项目,项目名myprint ,类名和基类保持MainWindow和QMainWindow不变,完成后,在myprint.pro文件,添加如下一行代码:
QT += printsupport
然后到设计模式向界面上拖入一个Text Edit。再到mainwindow.h文件中先添加类的前置声明
class QPrinter;
然后添加几个槽的声明:
private slots:
void doPrint();
void doPrintPreview();
void printPreview(QPrinter *printer);
void createPdf();
下面到mainwindow.cpp文件中添加头文件
#include <QPrinter>
#include <QPrintDialog>
#include <QPrintPreviewDialog>
#include <QFileDialog>
#include <QFileInfo>
在构造函数中定义几个动作:
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(createPdf()));
ui->mainToolBar->addAction(action_print);
ui->mainToolBar->addAction(action_printPreview);
ui->mainToolBar->addAction(action_pdf);
然后添加那几个槽的定义:
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); // 则执行打印操作
}
}
这里先建立了QPrint对象,然后创建打印对话框,选择打印范围。没有选中范围就打印整个页面
void MainWindow::doPrintPreview() // 打印预览
{
QPrinter printer;
QPrintPreviewDialog preview(&printer, this); // 创建打印预览对话框
// 当要生成预览页面时,发射paintRequested()信号
connect(&preview, &QPrintPreviewDialog::paintRequested,
this, &MainWindow::printPreview);
preview.exec();
}
//自定义的槽函数
void MainWindow::printPreview(QPrinter *printer)
{
ui->textEdit->print(printer);
}
使用打印预览对话框来进行打印预览,要关联它的paintRequested
信号到槽函数printPreview。
并以传来的QPrinter类对象指针为参数
void MainWindow::createPdf() // 生成PDF文件
{
QString fileName = QFileDialog::getSaveFileName(this, tr("导出PDF文件"),
QString(), "*.pdf");
if (!fileName.isEmpty()) {
if (QFileInfo(fileName).suffix().isEmpty())
fileName.append(".pdf"); // 如果文件后缀为空,则默认使用.pdf
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat); // 指定输出格式为pdf
printer.setOutputFileName(fileName);
ui->textEdit->print(&printer);
}
}
学习完这一章,读者可以去看下《Qt 及 Qt Quick开发实战精解(第2版)》一书中的多文档编辑器实例,那个程序比较综合,如果可以很好地完成,那么说明Qt已经入门了。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_35629971/article/details/123576056
内容来源于网络,如有侵权,请联系作者删除!