我有一个 QPlainTextEdit 小部件,其中包含用户输入的文本。文本可能包含 \n 个字符,也可能都在一个很长的行上。我的目标是在带有自动换行的打印机(纸上)上打印此文本。函数 QPlainTextEdit::print() 和 QTextDocument::print() 不适合我,因为它们都在页面底部打印页码,这是我不想要的,其次,我似乎不能能够控制要打印的页面(例如,如果用户只想打印 5 页中的第 2 页) - 始终打印整个文档。
基本上我使用 QPainter 对象在打印机上绘制文本。我面临的主要困难是确定何时调用 QPrinter::newPage() 函数。您如何确定页面上可以容纳多少文本?如果文本在一个长行上并且该行正在自动换行,那么您如何知道第一页何时已满以及何时开始第二页?我使用以下代码进行绘制:
painter.drawText(printer->pageRect(), Qt::TextWordWrap, ui->plainTextEdit->toPlainText());
Painter 是 QPainter 类型;打印机是 QPrinter 类型;plainTextEdit 是 QPlainTextEdit 类型。