распечатать документ QPlainTextEdit только в виде простого текста

Мне интересно, как распечатать документ 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);
}

Есть идеи ?? Заранее спасибо !

2

Решение

Использовать этот:

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:

введите описание изображения здесь

Как видите, форматирования нет.

3

Другие решения


По вопросам рекламы [email protected]