2013-08-15 2 views
0

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

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

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

Спасибо!

+0

Посмотрите на http://qt-project.org/faq/answer/how_can_i_print_a_widget – user2672165

ответ

0

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

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

0

Аси меня 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); 
Смежные вопросы