如何让Qt打印完整的对话框或窗口?我可以使用外部程序转储窗口内容xwd
并打印,但我更愿意用Qt完成所有操作.
使用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();
虽然您可以使用grabWidget来获取对话框的像素图表示,但实际上您将打印像素图的像素,即对话框被光栅化为屏幕分辨率,然后缩放到打印机分辨率.这可能会也可能不会导致一些伪影.
另一种方法是使用带有绘图设备的QWidget :: render()函数.这样,您就可以将打印机作为涂装设备.现在,使用打印机的分辨率将对话框"绘制"到打印机上.