使用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);
}
按下打印按钮时,会出现以下对话框:
正如您所见,内容遍布整个页面。 然后我单击预览对话框中的页面设置按钮,显示:
不做任何更改,我点击“确定”,然后预览变为正确:
问题是如何通过代码更正预览?
答案 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)
...