我在Window 7上使用Qt版本4.8.4。我没有条件在Mac,Linux等其他平台上测试此问题...我使用以下代码预览内容
void DemoClass::on_btnOK_clicked()
{
QPrinter printer;
printer.setResolution(QPrinter::HighResolution);
printer.setPaperSize(QPrinter::A4);
printer.setOrientation(QPrinter::Portrait);
printer.setFullPage(true);
QPrintPreviewDialog *printPreview = new QPrintPreviewDialog(&printer);
connect(printPreview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(print(QPrinter*)));
printPreview->setWindowTitle("Preview Dialog");
Qt::WindowFlags flags(Qt::WindowTitleHint);
printPreview->setWindowFlags(flags);
printPreview->exec();
}
void DemoClass::print(QPrinter *printer)
{
QPainter painter(printer);
painter.setRenderHints(QPainter::Antialiasing |
QPainter::TextAntialiasing |
QPainter::SmoothPixmapTransform, true);
painter.drawText(100, 100, "Hello World! 123");
}
按下OK按钮,会出现以下对话框:
如您所见,页面为空白。该页面不包含任何内容。然后我单击预览对话框中的页面设置按钮,显示:
...在不更改任何内容的情况下,单击“确定”,然后预览变为正确:
我真的不明白原因是什么。如何在不更改页面设置的情况下正确显示内容?
你有解决方案吗?
P / S: 我看过this post,与我的问题类似。作者建议使用QPageSetupDialog
对象,我尝试了不同的方法。但我仍然没有解决问题,因为我是Qt的新手。
答案 0 :(得分:0)
我认为问题在于为打印机设置高分辨率,根据文档记录,1200 dpi。删除以下行
printer.setResolution(QPrinter::HighResolution);
使文本显示在预览窗口中。 由于您尝试设置高分辨率,我认为您还需要相应地缩放您的画家,以便它对应于视图/页面大小。