0

Assuming I have a QTreeWidget like that

Print QTreeWidget

I tried this code to Print/Export this QTreeWidget to a file (The name of this QTreeWidget is trvListVehicle)

QPrinter printer(QPrinter::HighResolution);
QPainter painter;
painter.begin(&printer);

double xscale = printer.pageRect().width() / double(ui->trvListVehicle->width());
double yscale = printer.pageRect().height() / double(ui->trvListVehicle->height());
double scale = qMin(xscale, yscale);
painter.translate(printer.paperRect().x() + printer.pageRect().width()/2,
                  printer.paperRect().y() + printer.pageRect().height()/2);
painter.scale(scale, scale);
painter.translate(-width()/2, -height()/2);

ui->trvListVehicle->render(&painter);

The program shows Print dialog for me to choose printer machine. After printing completely, I got a blank page. The page didn’t contain any content.

Could you help me?

Thanks!

Tan Viet
  • 1,983
  • 6
  • 25
  • 36

2 Answers2

0

I guess that printer returns an empty pageRect(). Maybe you need to select a paperSize(), since that is driver dependent...

Try to display some info, for instance with qDebug() << printer.pageRect(), that can easily be redirected to file...

CapelliC
  • 59,646
  • 5
  • 47
  • 90
0

Asi me funcionó a mi, suerte!

QPrinter printer;
QPainter painter;
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName("nonwritable.pdf");
painter.begin(&printer);
painter.translate(printer.paperRect().x() + printer.pageRect().width(),
                            printer.paperRect().y() + printer.pageRect().height());
         painter.scale(1, 1);
         painter.translate(-width()/2, -height());

         ui->treeWidget->render(&painter);