Как распечатать / экспортировать контент QTreeWidget?

Предполагая, что у меня есть 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);

Программа показывает диалог печати для меня, чтобы выбрать принтер. После полной печати я получил пустая страница. На странице не было никакого контента.

Не могли бы вы помочь мне?

Спасибо!

0

Решение

я думаю что printer возвращает пустое pageRect(), Может быть, вам нужно выбрать paperSize(), поскольку это зависит от драйвера …

Попробуйте отобразить некоторую информацию, например, с qDebug() << printer.pageRect(), который может быть легко перенаправлен в файл …

0

Другие решения

Asi me funcionó ми, 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);
0

По вопросам рекламы [email protected]