2016-01-27 33 views
0

我很難將QTextEdit的上下文呈現給畫家(打印爲PDF)。所有其他小部件都正確打印,只有QTextWidget的文本沒有。QtTextEdit:未呈現給QPainter的文本內容

的小部件看起來很好的GUI:

QTextEdit in widget

但QTextWidget的文本不會打印到PDF:

enter image description here

的代碼非常簡單。也許我需要添加額外的標誌?我希望文本與它在GUI中看起來相同,因此單獨渲染文本(使用textField-> document() - > drawContents(&畫家)不是最佳解決方案)

QTextEdit* textField= ... 
// textedit is correctly visible 

QPrinter printer(QPrinter::HighResolution); 
... 
QPainter painter(&printer); 
textField->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren); 

回答

0

最後,一個好的解決方案是直接呈現在的QTextEdit使用drawContents()文件。這更好,因爲它呈現矢量圖形。

QTextEdit* textField= ... 

// textedit is correctly visible 
QPrinter printer(QPrinter::HighResolution); 
... 

QPainter painter(&printer); 
// textField->render(&painter, QPoint(), QRegion(), QWidget::DrawChildren); 
textField->document()->drawContents(&painter); 
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。 enter image description here

你可以嘗試(可替代)textEdit->print(printer);painter->drawText(printer.pageRect(), ui->textEdit->toPlainText());

+0

有趣:)也許這是Qt中的一個bug 4.8.2 – Ben

+1

那裏有一些4.8.x中的打印問題。你在MAC下使用Qt嗎? – gj13

+0

不,使用Windows7 – Ben