我很难将QTextEdit的上下文呈现给画家(打印到PDF)。所有其他小部件都已正确打印,只有QTextWidget的 text 不是。
小部件在GUI中看起来很好:
但是QTextWidget的文本没有打印到PDF:
代码非常简单。也许我需要添加额外的标志?我希望文本呈现与在GUI中看起来相同,因此单独呈现文本(使用 textField-> document() - > drawContents(& painter),不是最好的解决方案)
QTextEdit* textField= ...
// textedit is correctly visible
QPrinter printer(QPrinter::HighResolution);
...
QPainter painter( &printer );
textField->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);
答案 0 :(得分:1)
您的代码段没有任何问题。我试过了:
void MainWindow::on_pushButton_clicked()
{
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("output.pdf");
QPainter painter( &printer );
ui->textEdit->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);
}
您可以尝试(作为替代方案)textEdit->print(printer);
或painter->drawText(printer.pageRect(), ui->textEdit->toPlainText());
答案 1 :(得分:0)
最后,一个好的解决方案是使用 drawContents()直接呈现 QTextEdit 的文档。这甚至更好,因为它呈现矢量图形。
QTextEdit* textField= ...
// textedit is correctly visible
QPrinter printer(QPrinter::HighResolution);
...
QPainter painter( &printer );
// textField->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren);
textField->document()->drawContents(&painter);