1

我在使用 QPdfWriter 和 QPainter 打印 QDialog 的一部分时遇到了一些问题。

为了稍微了解一下,我在一家遥测/激光雷达公司担任工程师,为了内部使用,我开发了一个 GUI,可以轻松比较/模拟我们的系统。我没有计算机结构,所以我只是在遵循一些 Qt 教程等之后才开发它(我一般喜欢编码,但我的意思是我不擅长它)。

在这个 GUI 中,我加入了一个“概述”。在实践中,它在 QDialog 中汇总了所有输入和输出。这个QDialog 包含一个scrollArea,定义在centralWidget 中。(屏幕右侧:https ://imgur.com/a/iiCGnaX )

所以我的研究让我使用这种编码来获取滚动区域,并以 PDF 格式打印:

QString filePath=QFileDialog::getSaveFileName(this, "System summary",path,"PDF files (*.pdf)");

QPdfWriter pdfWriter(filePath);
pdfWriter.setResolution(100);
QPainter painter;
painter.begin(&pdfWriter);
painter.setRenderHint(QPainter::SmoothPixmapTransform);
QPixmap screenshotPDF = contenu->QWidget::grab();
painter.drawPixmap(0,0,screenshotPDF);

painter.end();

在这种情况下,屏幕区域的内容完全是手工制作的(它有一张A4纸的尺寸,我放的是没有布局的QGroupBox)。

事情是结果没有一个好的质量。我试图在渲染提示上播放分辨率,但我没有找到很好的东西。屏幕在这里:https ://imgur.com/a/Gh3LHPM 。如您所见,它“模糊”且不整洁。

我想我做错了什么,但我尝试的所有方法都没有很好地工作(例如,如果我只是将“setResolution”行更改为 N*100,我最终会得到 N 次太小/太高的结果)

这是我第一次在这里发帖,希望我的问题是适当的,同时我要感谢这个论坛,它对我这个新手有很大帮助。

伊姆拉

4

0 回答 0