我想知道如何打印 QPlainTextEdit
组件的文档,而不使用任何颜色、背景或格式(仅限纯文本)。我的代码是打印背景(在我的例子中是黑底白字)。
QPrinter printer;
QPrintDialog dialog( &printer, NULL );
dialog.setWindowTitle( tr( "Print Content" ) );
if ( isSelection ) {
dialog.addEnabledOption( QAbstractPrintDialog::PrintSelection );
}
if ( dialog.exec() == QDialog::Accepted ) {
document->print(&printer);
}
有什么想法吗?提前致谢!
最佳答案
使用这个:
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("output.pdf");
QString buffer = ui->plainTextEdit->document()->toHtml();
ui->plainTextEdit->setPlainText(ui->plainTextEdit->toPlainText());
ui->plainTextEdit->document()->print(&printer);
ui->plainTextEdit->clear();
ui->plainTextEdit->appendHtml(buffer);
主要思想是只打印不带格式的纯文本,但打印后设置普通格式的文本,这样用户就不会丢失格式化数据。
我考虑了改进,所以我也写了这个:
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("output.pdf");
QTextDocument *buffer = ui->plainTextEdit->document()->clone();
buffer->setPlainText(ui->plainTextEdit->toPlainText());
buffer->print(&printer);
为什么更好?我们克隆QTextDocument *buffer
,以便我们使用这个新文档。我们的纯文本编辑保持不可更改,因此用户在打印时不会看到未格式化的文本。但是,当您不再需要此克隆时,请不要忘记删除缓冲区。
结果:
在 PDF 中:
如您所见,没有格式。
关于c++ - 仅打印 QPlainTextEdit 文档纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26347818/