Оно возвращает true, если пользователь нажал кнопку ОК; в противном случае оно возвращает false. После вызова функции ехес() объект QPrinter готов для использования. (Можно также печатать, не используя QPrintDia­log, а напрямую вызывая функции-члены класса QPrinter для подготовки печати.)

Затем мы создаем QPainter для рисования на QPrinter. Мы устанавливаем окно на прямоугольник изображения и область отображения на прямоугольник с тем же соотношением сторон, и мы рисуем изображение в позиции (О, 0).

По умолчанию окно QPrinter инициализируется таким образом, что разрешаю­щая способность принтера будет аналогична разрешающей способности экрана (обычно она составляет примерно от 72 до 100 точек на дюйм), позволяя легко ис­пользовать для печати программный код по рисованию виджета. Здесь это не имеет значения, поскольку мы сами задали параметры нашего окна.

Вывод на печатающее устройство элементов, занимающих не более одной стра­ницы, выполняется достаточно просто, но во многих прИЛОЖМ тать несколько страниц. В таких случаях мы должны сначал^ нарисовать одну стра­ницу и затем вызвать функцию newPage() для перехода на следующую страницу. Здесь возникает проблема определения того количества информации, которое будет печататься на одной странице. Существует два подхода при обработке Многостра­ничных документов в Qt: - i I

• Мы можем преобразовать наши данные в формат HTML и затем воспроизвести их с применением класса QTextDocument, процессора форматированного текста Qt.

• Мы можем выполнить рисование и разбивку на страницы вручную.

Мы рассмотрим по очереди оба подхода. В качестве примера мы распечатаем цве­точный справочник: список названий цветов с текстовым описанием. Каждый элемент этого справочника Представляется строкой формата «название: описание», например:

Miltonopsis santanae: Самый опасный вид орхидеи.

Поскольку данные каждого цветка представлены одной строкой, мы можем • представить цветочный справочник при помощи одного объекта QStringList.

На первом этапе QStringList преобразуется в формат HTML. Каждый цветок ; представляется:таблицей HTML с двумя ячейками. Мы используем функцию" Qt::escape() для замены специальных Символов «&», «<»,«>» на соответствующие элементы формата HTML («&arhp;», «&lt;», «&gt;»). Затем мы вызываем функцию printHtml() для печати текста.


<< назад вперед >>