如何打印Qt对话框或窗口?

时间:2009-03-25 11:19:34

标签: c++ linux qt printing

如何让Qt打印完整的对话框或窗口? 我可以使用像xwd这样的外部程序转储窗口内容并打印出来,但我更愿意用Qt来完成。

2 个答案:

答案 0 :(得分:8)

使用QPixmap::grabWidget(或QPixmap::grabWindow作为外部窗口)。 像这样:

QPixmap pix = QPixmap::grabWidget(myMainWindowWidget);

Dunno如果你真的打算将它打印到打印机上,如果是这样的话:

QPrinter printer(QPrinter::HighResolution);
QPainter painter;
painter.begin(&printer);    
painter.drawPixmap (0, 0, &pix);    
painter.end();

答案 1 :(得分:8)

虽然您可以使用grabWidget来获取对话框的像素图表示,但实际上您将打印像素图的像素,即对话框光栅化为屏幕分辨率,然后缩放到打印机分辨率。这可能会也可能不会产生一些瑕疵。

另一种方法是使用带有绘图设备的QWidget::render()函数。这样,您就可以将打印机作为涂装设备。现在,使用打印机的分辨率将对话框“绘制”到打印机上。