slashdot.jpで質問したら、偉い人が教えてくださいました。
QPageLayout::setModeを使うと良いとのこと。QPageLayout::FullPageModeを設定します。
void MainWindow::on_pushButton_clicked() { QPrintDialog dlg(this); if (dlg.exec() == QDialog::Accepted) { QPrinter *printer = dlg.printer(); QPageLayout layout = printer->pageLayout(); layout.setMode(QPageLayout::FullPageMode); printer->setPageLayout(layout); printer->setPaperSize(QPrinter::A4); printer->setOrientation(QPrinter::Portrait); printer->setPageMargins(0, 0, 0, 0, QPrinter::Millimeter); printer->setResolution(254); QPainter painter(printer); painter.setPen(QPen(Qt::black, 20)); painter.drawEllipse(0, 0, 2100, 2970); } }
これで、期待通りに動作するようになりました。