2013-08-15 3 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

printerpageRect()을 반환합니다. 즉 의존 드라이버이기 때문에 어쩌면 당신은 qDebug() << printer.pageRect()으로 예를 들어, 몇 가지 정보를 표시하는 ...하는 paperSize()을 선택

시도 필요가 쉽게 나를 마일을 funcionó

0

년만 ... 파일로 리디렉션 할 수 있습니다 , 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); 
관련 문제