我有一个QPlainTextEdit小部件,用于保存用户输入的文本。该文本可能包含\ n字符,或者它们可能都在一行很长的行中。我的目标是用文字打印机在打印机上(纸上)打印此文本。函数QPlainTextEdit :: print()和QTextDocument :: print()不适合我,因为它们都在页面底部打印页码,我不想要,其次,我似乎无法能够控制打印哪些页面(例如,如果用户只想打印5页中的第2页) - 整个文档始终打印。将纯文本打印到打印机(纸张)
基本上我使用QPainter对象来绘制打印机上的文本。我面临的主要困难是确定何时调用QPrinter :: newPage()函数。你如何确定在一个页面上有多少文字?如果文本位于一条长长的一条线上,并且该行正在进行文字包装,那么如何知道第一页何时已满并何时开始第二页?我使用下面的代码来绘制:
painter.drawText(printer->pageRect(), Qt::TextWordWrap, ui->plainTextEdit->toPlainText());
画家是QPainter类型;打印机是QPrinter类型的; plainTextEdit是QPlainTextEdit类型。
你可能需要你QFontMetrics来获取文本的大小。 – Kunal