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の初心者であるため、まだ問題を解決していません。