{
ui->setupUi(this);
QAction *acton_print = new QAction("打印",this);
QAction *acton_printPreview = new QAction("打印预览",this);
QAction *acton_pdf = new QAction("生成pdf",this);
connect(acton_print,&QAction::triggered,this,&MainWindow::doPrint);
connect(acton_printPreview,&QAction::triggered,this,&MainWindow::doPrintPreview);
connect(acton_pdf,&QAction::triggered,this,&MainWindow::createPdf);
ui->mainToolBar->addAction(acton_print);
ui->mainToolBar->addAction(acton_printPreview);
ui->mainToolBar->addAction(acton_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)
{
ui->textEdit->print(printer);//则执行打印操作
}
//生成pdf
void MainWindow::createPdf()
{
QString fileName = QFileDialog::getSaveFileName(this,"导出PDF文件",QString(),"*.pdf");
if(!fileName.isEmpty())
{
if(QFileInfo(fileName).suffix().isEmpty())
fileName.append(".pdf");
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat);//指定输出格式为pdf
printer.setOutputFileName(fileName);
ui->textEdit->print(&printer);
}
}