0

我很难将 QTextEdit 的上下文呈现给画家(打印为 PDF)。所有其他小部件都正确打印,只有 QTextWidget 的文本没有。

小部件在 GUI 中看起来不错:

小部件中的 QTextEdit

但是 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);
4

2 回答 2

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);
}

它的工作原理。我正在使用 Qt 5.5.1。 在此处输入图像描述

您可以尝试(作为替代)textEdit->print(printer);painter->drawText(printer.pageRect(), ui->textEdit->toPlainText());

于 2016-01-27T10:20:46.630 回答
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);
于 2016-02-23T12:28:03.577 回答