QPrintPreviewDialog预览不正确

时间:2011-05-26 08:13:18

标签: qt printing qt4

使用QPrintPreviewDialog预览打印件,我使用以下代码

    QPrinter printer;
    printer.setResolution(QPrinter::HighResolution);
    printer.setPaperSize(QPrinter::A4);
    printer.setOrientation(QPrinter::Portrait);
    QPrintPreviewDialog *pd = new QPrintPreviewDialog(&printer);
    connect(pd,SIGNAL(paintRequested(QPrinter*)),this,SLOT(print(QPrinter*)));
    pd->exec();


void Class::print(QPrinter *p)
{
    QTextEdit *ted = new QTextEdit;
    ted->insertHtml("<center><img src='"+QString(":/img/logo.png")+"' width='90' height='72'/><b><font size='9'>Logo Text</font></b></center>");
    ted->document()->print(p);
}

按下打印按钮时,会出现以下对话框:

enter image description here

正如您所见,内容遍布整个页面。 然后我单击预览对话框中的页面设置按钮,显示:

enter image description here

不做任何更改,我点击“确定”,然后预览变为正确

enter image description here

问题是如何通过代码更正预览?

3 个答案:

答案 0 :(得分:1)

使用QTextDocument而不是QTextEdit,后者是一个小部件,它使输出依赖于调整大小。

答案 1 :(得分:0)

在预览前添加QPageSetupDialog以显示。

答案 2 :(得分:0)

我有同样的问题。显然,按页面设置对话框的OK按钮可更改分辨率。为了解决这个问题,我在计算打印预览的方法中更改了分辨率:

dialog = QPrintPreviewDialog()
dialog.paintRequested.connect(self.print)
dialog.exec_()

def print(self, printer):
    printer.setResolution(300)
    painter = QPainter()
    painter.begin(printer)
    ...
相关问题