未末658 2023-04-06 16:26 采纳率: 0%
浏览 7

QPrinter连续导出PDF

Qt如何连续PDF,我想导出QCharts上面的曲线,导出第一张后导出第二张会把第一张覆盖掉,怎么连续导出图片为PDF?

  • 写回答

2条回答 默认 最新

  • ccidc 2023-04-06 17:17
    关注

    对于您的问题,可以使用QPrinter和QPainter来实现连续导出图片为PDF,在绘制完一张图片后,需要将下一张图片绘制在当前页面的底部,以实现连续的效果。具体实现步骤如下:

    1.创建一个QPrinter对象,并设置输出格式为PDF。

    QPrinter printer(QPrinter::HighResolution);
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setOutputFileName("charts.pdf");
    2.创建一个QPainter对象,并将其与QPrinter绑定。

    QPainter painter(&printer);
    3.将第一张图片绘制在painter上。

    4.重置painter的状态,使其准备绘制下一张图片。

    painter.reset();
    painter.translate(0, currentPageHeight);
    5.将第二张图片绘制在painter上,此时它会被绘制在第一张图片的下方。

    6.重复步骤4和5,直到所有图片都被绘制在了painter上。

    7.结束绘制并关闭QPrinter。

    完整的实现代码如下:

    // 创建 QPrinter 对象
    QPrinter printer(QPrinter::HighResolution);
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setOutputFileName("charts.pdf");

    // 创建 QPainter 对象
    QPainter painter(&printer);

    // 绘制第一张图片
    painter.drawPixmap(0, 0, chart1Pixmap);
    int currentPageHeight = printer.paperRect().height();

    // 绘制第二张图片
    painter.reset();
    painter.translate(0, currentPageHeight);
    painter.drawPixmap(0, 0, chart2Pixmap);

    // 绘制第三张图片
    painter.reset();
    painter.translate(0, currentPageHeight * 2);
    painter.drawPixmap(0, 0, chart3Pixmap);

    // 结束绘制并关闭 QPrinter
    painter.end();
    printer.newPage();
    printer.setOutputFileName("");
    以上代码仅为示例,具体实现可能需要根据实际情况进行调整。

    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月6日

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。