Я пытаюсь напечатать в PDF-документе два вида элементов, которые используют другой класс.
Например, я хотел бы напечатать строку из QTableWidget
и QGraphicsView
или QTextEdit
и QGraphicsView
.
К несчастью,
- QGraphicsView
можно записать в PDF с помощью QPainter
, поместив его в QPixmap pixmap
и используя painter.drawPixmap(pixmap
, тогда как,
- QTextEdit
и QTableWidget
можно записать в PDF, поместив их в QTextDocument doc
и вызвав doc.print(&printer);
.
Эти два метода несовместимы и, когда я заставляю мой QTableWidget
/ QTextEdit
быть в QPixmap
, он, конечно, соответствует скриншоту виджета и, очевидно, он не завершен в моем PDF (у моих QTableWidget
или QTextEdit
много строк).
Знаете ли вы метод, который можно использовать для одновременной печати в PDF, строки из QTableWidget
, QTextEdit
и QGraphicsView
?
Заранее спасибо
Мой код следующий для QGraphicsView
int pageWidth,pageHeight,size;
QRect viewport;
QPrinter printer;
printer.setOutputFileName(filename);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setPageSize(QPrinter::A4);
QCPPainter painter(&printer);
pageWidth = printer.pageRect(QPrinter::DevicePixel).width();
pageHeight = printer.pageRect(QPrinter::DevicePixel).height();
size = (pageWidth < pageHeight) ? pageWidth : pageHeight;
painter.setFont(QFont("times",18));
painter.drawText(30, 40, QString::fromStdString("Title"));
printer.newPage();
viewport = ui->graph->viewport();
painter.translate(0, 200);
ui->graph->setViewport(printer.pageRect());
ui->graph->toPainter(&painter, size/2, size/2);
ui->graph->setViewport(viewport);
painter.end();