Затем мы создаем
По умолчанию окно
Вывод на печатающее устройство элементов, занимающих не более одной страницы, выполняется достаточно просто, но во многих приложениях приходится печатать несколько страниц. В таких случаях мы должны сначала нарисовать одну страницу и затем вызвать функцию
• Мы можем преобразовать наши данные в формат HTML и затем воспроизвести их с применением класса QTextDocument, процессора форматированного текста Qt.
• Мы можем выполнить рисование и разбивку на страницы вручную.
Мы рассмотрим по очереди оба подхода. В качестве примера мы распечатаем цветочный справочник: список названий цветов с текстовым описанием. Каждый элемент этого справочника представляется строкой формата
Miltonopsis santanae: Самый опасный вид орхидеи.
Поскольку данные каждого цветка представлены одной строкой, мы можем представить цветочный справочник при помощи одного объекта
01 void PrintWindow::printFlowerGuide(const QStringList &entries)
02 {
03 QString html;
04 foreach(QString entry, entries) {
05 QStringList fields = entry.split(": ");
06 QString title = Qt::escape(fields[0]);
07 QString body = Qt::escape(fields[1]);
08 html = "
\n"
09 "
"
10 "" + title + "\n
" + body"
11 + "\n\n
\n";
12 }
13 printHtml(html);
14 }
На первом этапе
01 void PrintWindow::printHtml(const QString &html)
02 {
03 QPrintDialog printDialog(&printer, this);
04 if (printDialog.exec) {
05 QPainter painter(&printer);
06 QTextDocument textDocument;
07 textDocument.setHtml(html);
08 textDocument.print(&printer);
09 }
10 }
Функция
Преобразование документа в формат HTML и использование
01 void PrintWindow::printFlowerGuide(const QStringList &entries)
02 {
03 QPrintDialog printDialog(&printer, this);
04 if (printDialog.exec) {
05 QPainter painter(&printer);
06 QList