0

假设我有一个像这样的 QTreeWidget

打印 QTreeWidget

我尝试使用此代码将此 QTreeWidget 打印/导出到文件(此 QTreeWidget 的名称是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);

该程序显示打印对话框供我选择打印机机器。完全打印后,我得到了一个空白页。该页面不包含任何内容。

你可以帮帮我吗?

谢谢!

4

2 回答 2

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);
于 2013-08-28T22:15:26.827 回答
0

我猜这会printer返回一个空的pageRect(). 也许您需要选择 a paperSize(),因为这取决于驱动程序...

尝试显示一些信息,例如qDebug() << printer.pageRect(),可以很容易地重定向到文件...

于 2013-08-15T06:42:18.653 回答