1

我在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:我已经阅读了这篇与我的问题类似的帖子。作者推荐使用QPageSetupDialog对象,我尝试了不同的方法。但是我仍然没有解决问题,因为我是Qt的新手。

4

1 回答 1

0

我认为问题在于为打印机设置高分辨率,根据文档,1200 dpi。删除以下行

printer.setResolution(QPrinter::HighResolution);

使文本出现在预览窗口中。由于您尝试设置高分辨率,我认为您还需要相应地缩放您的画家,使其与视图/页面大小相对应。

于 2013-09-11T07:38:37.267 回答