2

我想知道如何打印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);  
}  

有任何想法吗 ??提前致谢 !

4

1 回答 1

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

主要思想是不格式化只打印纯文本,但打印后设置普通格式化文本,这样用户就不会丢失格式化数据。

我想到了改进,所以我也写了这个:

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中:

在此处输入图像描述

如您所见,没有格式。

于 2014-10-13T20:07:52.473 回答