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

Pie*_*per 4 c++ linux printing qt

如何让Qt打印完整的对话框或窗口?我可以使用外部程序转储窗口内容xwd并打印,但我更愿意用Qt完成所有操作.

cor*_*rné 8

使用QPixmap :: grabWidget(或QPixmap :: grabWindow用于外部窗口).像这样的东西:

QPixmap pix = QPixmap::grabWidget(myMainWindowWidget);
Run Code Online (Sandbox Code Playgroud)

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

QPrinter printer(QPrinter::HighResolution);
QPainter painter;
painter.begin(&printer);    
painter.drawPixmap (0, 0, &pix);    
painter.end();
Run Code Online (Sandbox Code Playgroud)


Ari*_*yat 8

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

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