如何打印/导出QTreeWidget内容?

时间:2013-08-15 05:14:24

标签: c++ qt qtreewidget

假设我有一个类似的QTreeWidget

Print 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);

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

你能帮帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

Asi mefuncionóami,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);