如何让Qt打印完整的对话框或窗口?
我可以使用像xwd
这样的外部程序转储窗口内容并打印出来,但我更愿意用Qt来完成。
答案 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()函数。这样,您就可以将打印机作为涂装设备。现在,使用打印机的分辨率将对话框“绘制”到打印机上。