我有一個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