代码之家  ›  专栏  ›  技术社区  ›  PiedPiper

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

  •  4
  • PiedPiper  · 技术社区  · 16 年前

    如何让qt打印完整的对话框或窗口? 我可以用类似这样的外部程序转储窗口内容 xwd 打印出来,但我更喜欢用qt来完成。

    2 回复  |  直到 16 年前
        1
  •  8
  •   Ariya Hidayat    16 年前

    当你可以使用 grabWidget 要获得对话框的PixMap表示,本质上,您将打印PixMap的像素,即将对话框光栅化为屏幕分辨率,然后缩放为打印机分辨率。这可能会或可能不会导致一些工件。

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

        2
  •  8
  •   corné    16 年前

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

    QPixmap pix = QPixmap::grabWidget(myMainWindowWidget);
    

    不知道如果你真的想把它打印到打印机上,如果是这样的话:

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