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 に答える