Есть ли способ напечатать в том же pdf QGraphicsView и строку QTableWidget или QTextEdit - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь напечатать в 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();
...