使用setPaperSize(QPrinter :: A4)QPrinter

时间:2016-11-14 15:36:04

标签: c++ qt printing qprinter

我使用以下代码设置 QPrinter 对象的纸张尺寸:

printer_.setPaperSize(QPrinter::A4);

在我的计算机上,它按预期工作,但在另一台计算机上,我的PDF报告布局被打破了#34;。

搜索原因,我发现了这个问题: Qt QPrinter setPaperSize does not work properly

像@Jens所说:" setPaperSize依赖于从打印机驱动程序收到的信息..."

我在 Qt文档上检查了QPrinter::A4尺寸,其尺寸对应 210 x 297 mm

我可以将 setPaperSize 参数从printer_.setPaperSize(QPrinter::A4);更改为printer_.setPaperSize(QSizeF(210, 297), QPrinter::Millimeter);吗? 它能正常工作吗(与打印机无关)?

我问它是因为我不能让另一台电脑再测试它,我无法在我的电脑上重现这个问题。顺便说一句,如果有人知道我怎么能在我的计算机上重现问题以测试问题是否已经解决,我很感激。

实施例: enter image description here

图像上的黑色边框仅用于显示打印区域的边界。

注意:我使用的是Qt 5.3.2

1 个答案:

答案 0 :(得分:1)

我更改了 setPaperSize 参数:

printer_.setPaperSize(QPrinter::A4);

为:

printer_.setPaperSize(QSizeF(210, 297), QPrinter::Millimeter);

210 297 来自 Qt 文档:

  

“QPrinter :: A4 - 0 - 210 x 297 mm,8.26 x 11.69英寸”

基本上,我没有使用QPrinter::A4从打印机设备获取尺寸,而是根据正确的 A4 毫米尺寸设置固定QSizeF

它对我有用。