QtでQTextDocumentを印刷するには?
A. QTextDocument + QPrinter QPlainTextEdit は内部で QTextDocument を使っているため、 その document をそのまま印刷できます。 基本コード(印刷ダイアログ付き) #include <QPrinter> #include <QPrintDialog> #include <QTextDocument> void MainWindow::printPlainTextEdit() { QPrinter printer(QPrinter::HighResolution); QPrintDialog dialog(&printer, this); dialog.setWindowTitle("印刷"); if (dialog.exec() != QDialog::Accepted) return; ui->plainTextEdit->document()->print(&printer); } 余白等を調整する QPrinter printer(QPrinter::HighResolution); printer.setPageSize(QPageSize(QPageSize::A4)); printer.setPageMargins(QMarginsF(15, 15, 15, 15), QPageLayout::Millimeter); 印刷プレビュー #include <QPrintPreviewDialog> void MainWindow::printPreview() { QPrinter printer(QPrinter::HighResolution); QPrintPreviewDialog preview(&printer, this); connect(&preview, &QPrintPreviewDialog::paintRequested, this, [this](QPrinter *printer){ ui->plainTextEdit->document()->print(printer); }); preview.exec(); } 保存場所指定 printer.setOutputFileName("/home/user/Documents/sample.pdf"); B. ページ設定のダイアログ #include <QtPrintSupport/QPrinter> #include <QtPrintSupport/QPageSetupDialog> void MainWindow::openPageSetup() { QPrinter printer(QPrinter::HighResolution); QPageSetupDialog dialog(&printer, this); dialog.setWindowTitle("ページ設定"); if (dialog.exec() == QDialog::Accepted) { // OK が押された // printer に設定が反映されている } } QPrinterのインスタンスを流用すれば印刷設定を引き継いで印刷できます。 ...