QT 打印机打印特殊尺寸

匿名 (未验证) 提交于 2019-12-03 00:36:02

头文件

#include <QMessageBox> #include <QDebug> #include <QPrinter> #include <QPrintDialog> #include <QPrintPreviewDialog> #include <QPainter> #include <QFileDialog> #include <QFileInfo> #include <QPageSetupDialog>

打印文本

    // 创建打印机对象     QPrinter printer;     // 创建打印对话框     QPrintDialog dlg(&printer, this);      //如果编辑器中有选中区域,则打印选中区域     dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);      //页面相关设置     printer.setPaperSize(QPrinter::Custom);//自定义大小     printer.setPageSizeMM(QSizeF(80,15));//自定义纸张尺寸     // 如果在对话框中按下了打印按钮,则执行打印操作     if (dlg.exec() == QDialog::Accepted) {         QPainter painter;//创建画笔         painter.begin(&printer);//绘制到打印机上         painter.drawText(1,20,ui->lineEdit->text());//绘制文本,其他的类似         painter.end();     }

打印PDF

    QString fileName = QFileDialog::getSaveFileName(this, tr("导出PDF文件"),                                                      QString(), "*.pdf");      if (!fileName.isEmpty()) {           // 如果文件后缀为空,则默认使用.pdf          if (QFileInfo(fileName).suffix().isEmpty())              fileName.append(".pdf");          QPrinter printer;          // 指定输出格式为pdf          printer.setOutputFormat(QPrinter::PdfFormat);          printer.setOutputFileName(fileName);          QPainter painter;          painter.begin(&printer);          painter.drawText(1,20,ui->lineEdit->text());          painter.end();      }

打印预览

    QPrinter printer;     // 创建打印预览对话框     QPrintPreviewDialog preview(&printer, this);      //页面相关设置     printer.setPaperSize(QPrinter::Custom);//自定义大小     //printer.setPaperSize(QSizeF(size.height(),size.width()),QPrinter::Point);     printer.setPageSizeMM(QSizeF(85,15));      // 当要生成预览页面时,发射paintRequested()信号     connect(&preview, SIGNAL(paintRequested(QPrinter*)),                   this,SLOT(printPreview(QPrinter*)));     preview.exec();
void MainWindow::printPreview(QPrinter *printer) {     QPainter painter;     QFont font;     painter.begin(printer);     font.setFamily("Microsoft YaHei");     font.setPointSize(15);     font.setItalic(true);     painter.setFont(font);     painter.drawText(1,35,ui->lineEdit->text());     painter.end();     //ui->textEdit->print(printer); }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!