У меня есть виджет QPlainTextEdit, который содержит текст, введенный пользователем. Текст может содержать символы \ n или все они могут быть на одной очень длинной строке. Моя цель - напечатать этот текст на принтере (на бумаге) с переносом слов. Функции QPlainTextEdit :: print() и QTextDocument :: print() мне не подходят, потому что они оба печатают номер страницы в нижней части страницы, чего я не хочу, а во-вторых, я не могу показаться иметь возможность контролировать, какие страницы печатать (например, если пользователь хочет распечатать страницу № 2 из 5 страниц) - весь документ всегда печатается.Печать обычного текста на принтер (бумага)
В основном я использую объект QPainter для рисования текста на принтере. Основная трудность, с которой я столкнулся, - это определить, когда вызывать функцию QPrinter :: newPage(). Как вы определяете, сколько текста поместится на странице? Если текст находится на одной длинной строке, а строка обертывается словом, откуда вы знаете, когда первая страница заполнена и когда начинается вторая страница? Я использую следующий код для рисования:
painter.drawText(printer->pageRect(), Qt::TextWordWrap, ui->plainTextEdit->toPlainText());
художник типа QPainter; принтер имеет тип QPrinter; plainTextEdit имеет тип QPlainTextEdit.
вам может понадобиться QFontMetrics, чтобы получить размер текста. – Kunal