我想知道如何在没有任何颜色,背景或格式的情况下打印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);
}
任何想法?提前谢谢!
答案 0 :(得分:3)
使用此:
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);
主要思想是只打印plainText而不进行格式化,但在打印后设置普通的格式化文本,这样用户就不会丢失格式化的数据。
我考虑过改进,所以我也写了这个:
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
,因此我们使用这个新文档。我们的plainTextEdit仍然是不可触摸的,因此用户在打印时不会看到未格式化的文本。但是不要忘记删除缓冲区当你不再需要这个克隆时。
结果:
在pdf中:
如您所见,没有格式化。