1

Windows 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] ボタンを押すと、次のダイアログが表示されます。

プレビュー コンテンツを表示できません

ご覧のとおり、ページは空白です。ページにはコンテンツが含まれていません。次に、プレビュー ダイアログのページ設定ボタンをクリックすると、次のように表示されます。

プレビュー コンテンツを表示できません

…何も変更せずに [OK] をクリックすると、プレビューが正しくなります。

プレビュー コンテンツを表示できません

何が原因なのかさっぱりわかりません。ページ設定を変更せずにコンテンツを正しく表示するにはどうすればよいですか?

解決策はありますか?

P/S:私の問題に似たこの投稿を読み著者はQPageSetupDialogオブジェクトの使用を推奨しており、私はさまざまな方法を試しました。しかし、私はQtの初心者であるため、まだ問題を解決していません。

4

1 に答える 1

0

問題は、プリンターに高解像度を設定することにあると思います。ドキュメントによると、これは 1200 dpi です。次の行を削除する

printer.setResolution(QPrinter::HighResolution);

テキストをプレビュー ウィンドウに表示します。高解像度を設定しようとしているので、ビュー/ページサイズに対応するように、それに応じてペインターもスケーリングする必要があると思います。

于 2013-09-11T07:38:37.267 に答える