Доброго дня Всем.
Начал изучать Qt совсем недавно, как то заинтересовал он меня.
Хочу поделиться банальной мелочью с которой может многие то же сталкиваются по началу.
Задача в том чтобы вывести простенький отчет на печать. Казалось бы что сложного, но я не сразу въехал,
а примеры в литературе меня даже немного запутали.
В итоге собственных экспериментов сделал так.
QPrinter printer;
QPrintDialog printDialog(&printer, this);
if (printDialog.exec())
{
// объект отрисовки
QPainter painter;
// проверка открытия для редактора
if (! painter.begin(&printer))
{
// открытие принтера проверим
qWarning("Ошибка открытия принтера!");
return; // Выходим
}
// Сообственно все, откроется диалог где указывать принтер нужно, далее рисуем просто наш отчет
//Теперь давайка отрисуем отчет на этом принтере
painter.setFont(QFont("Arial", 14)); //шрифт
painter.setPen(QPen(2)); // толщина линий таблицы
int y_pdf = 30;
int WtabPdf=350;
int X_oneTab = 20;
int X_twoTab = 370;
int H_tab = 25;
painter.drawText(230,y_pdf, "Протокол № " + m_ui->labelNumberZav_znach->text());
y_pdf +=H_tab;
QRect rectfont = QRect(X_oneTab,y_pdf,WtabPdf,H_tab);
painter.drawRect(rectfont);
painter.drawText(rectfont, Qt::AlignLeft ,"Заводской номер");
rectfont.setRect(X_twoTab,y_pdf,WtabPdf,H_tab);
painter.drawRect(rectfont);
painter.drawText(rectfont, Qt::AlignLeft ,m_ui->labelNumberZav_znach->text());
// и так далее рисуем
painter.end(); // завершаем рисование
} // end printDialog.exec()
Но еще в реальных задачах необходимо хранить где то отчеты. Здесь как-то проще.
Например есть встроенная возможность сохранить в PDF.
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat);
// название протокола формируем согласно заводскому номеру и году
printer.setOutputFileName( "protocol/" + m_ui->labelNumberZav_znach->text()
+ m_ui->labelNumberDec_znach->text()
+".pdf"); // по другому printer.setOutputFileName("Test.pdf");
// далее все также как и при печати
// объект отрисовки
QPainter painter;
// проверка открытия для редактора
if (! painter.begin(&printer))
{
// открытие файла проверим
qWarning("Ошибка открытия файла!");
return; // Выходим
}
// рисуем отчет
// ......
painter.end(); // завершаем рисование
А вот вопрос знающим, можно как то напечатать уже созданный раннее pdf?