QT 打印机打印特殊尺寸

头文件

#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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值