QPrinter连续导出PDF

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

对于您的问题,可以使用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("");
以上代码仅为示例,具体实现可能需要根据实际情况进行调整。



不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^