Как печатать длинные виджеты последовательно

#qt

#qt

Вопрос:

В QT я создал пользовательский интерфейс с помощью QWidget. И я хочу распечатать пользовательский интерфейс на своем принтере. Но пользовательский интерфейс слишком длинный для печати на одной странице.(высота больше размера A4) Я хочу непрерывную печать без функции newPage().

Я использую QPrinter и QPainter. Но результатом, который я получил, было обрезанное изображение виджета. Я не хочу использовать функцию newPage().

 QPrinter printer;
QPainter painter;

QPrintDialog printDialog(amp;printer);
if (printDialog.exec() == QDialog::Accepted) {
    painter.begin(amp;printer);
    ui->scrollArea->widget()->render(amp;painter);
}
  

Мне не нравится применять printer.newPage() вручную к каждому пользовательскому интерфейсу.

Есть ли какая-либо опция или код, который автоматически печатается на следующей странице, например MS Word?

Комментарии:

1. Вы установили макет принтера и размер страницы в правильные значения?

2. Я не устанавливал размер страницы макета. Я использую значение по умолчанию. Задаю ли я конкретный макет и размер страницы для печати формата А4?

3. Попробуйте установить размер страницы и поля в формате A4. Взгляните сюда: doc.qt.io/qt-5/qprinter.html и здесь doc.qt.io/qt-5/qpagelayout.html Если это не сработает, вам нужно будет использовать newPage, чтобы разбить ваш виджет…