【问题标题】:QPrintPreviewDialog incorrect previewQPrintPreviewDialog 预览不正确
【发布时间】:2011-05-26 08:13:18
【问题描述】:

使用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);
}

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

如您所见,内容遍布整个页面。 然后我点击预览对话框上的页面设置按钮,就会出现:

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

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

【问题讨论】:

    标签: qt printing qt4


    【解决方案1】:

    使用 QTextDocument 代替 QTextEdit,后者是一个小部件,这使得输出依赖于调整大小。

    【讨论】:

      【解决方案2】:

      添加QPageSetupDialog 以在预览前显示。

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。显然,按页面设置对话框的确定​​按钮会更改分辨率。为了解决这个问题,我在计算打印预览的方法中将分辨率改回:

        dialog = QPrintPreviewDialog()
        dialog.paintRequested.connect(self.print)
        dialog.exec_()
        
        def print(self, printer):
            printer.setResolution(300)
            painter = QPainter()
            painter.begin(printer)
            ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-20
          • 1970-01-01
          • 1970-01-01
          • 2020-10-16
          • 1970-01-01
          相关资源
          最近更新 更多