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
07 paginate(&painter, &pages, entries);
08 printPages(&painter, pages);
09 }
10 }
После настройки принтера и построения объекта рисовальщика мы вызываем вспомогательную функцию
Например, предположим, что цветочный справочник содержит всего 6 элементов, которые мы обозначим буквами
01 void PrintWindow::paginate(QPainter *painter, QList
02 const QStringList &entries)
03 {
04 QStringList currentPage;
05 int pageHeight = painter->window().height() - 2 * LargeGap;
06 int у = 0;
07 foreach (QString entry, entries) {
08 int height = entryHeight(painter, entry);
09 if (у + height > pageHeight && !currentPage.empty()) {
10 pages->append(currentPage);
11 currentPage.clear();
12 y = 0;
13 }
14 currentPage.append(entry);
15 у += height + MediumGap;
16 }