ユーザーが入力したテキストを保持する QPlainTextEdit ウィジェットがあります。テキストに \n 文字が含まれている場合や、すべてが 1 つの非常に長い行にある場合があります。私の目的は、このテキストをプリンターで (紙に) ワードラップで印刷することです。関数 QPlainTextEdit::print() および QTextDocument::print() は、どちらもページの下部にページ番号を印刷するため、私には適していません。どのページを印刷するかを制御できます (たとえば、ユーザーが 5 ページのうち 2 ページ目だけを印刷したい場合) - ドキュメント全体が常に印刷されます。
基本的に、QPainter オブジェクトを使用してプリンターにテキストを描画しています。私が直面している主な問題は、いつ QPrinter::newPage() 関数を呼び出すかを決定することです。ページに収まるテキストの量をどのように決定しますか? テキストが 1 つの長い行にあり、行が折り返されている場合、最初のページがいっぱいになったときと、2 ページ目を開始するときをどのように知るのでしょうか? 次のコードを使用して描画します。
painter.drawText(printer->pageRect(), Qt::TextWordWrap, ui->plainTextEdit->toPlainText());
Painter は QPainter 型です。printer のタイプは QPrinter です。plainTextEdit は QPlainTextEdit 型です。