即使它被放大,Grabwidget也能抓住完整的视图

时间:2013-04-01 05:34:22

标签: qt qpixmap

我正在使用 QPixmap QPixmap::grabWidget ( QWidget * widget, int x = 0, int y = 0, int width = -1, int height = -1 )抓取QPixmap object中的视口。

在某些情况下,即使屏幕放大到某个级别,我也想抓住整个屏幕,这一刻将会滚动出来。 grabwidget的某些变体或任何其他函数是否有助于此?

感谢。

1 个答案:

答案 0 :(得分:0)

不管怎样,我认为您需要将对象的分辨率设置为“截图”所需的大小。以下是一些尝试的不同想法:

http://qt-project.org/doc/qt-4.8/qpixmap.html#grabWidget

  

这个函数实际上要求widget在打开画家重定向的情况下调用paintEvent()来绘制自己(以及它的子绘画本身)。

切换窗口小部件以使用修改后的视口。然后在调用grabWidget之前,将开关设置为使用全分辨率视口(QPainter::setViewport()),然后在完成grabWidget后重置开关。您还可以在QPixmap.cpp中查看grabWidget的源代码(链接到src)。

也许更改窗口小部件在滚动区域的响应方式可能会有所不同。 QScrollArea::setWidgetResizeable()

http://qt-project.org/doc/qt-4.8/desktop-screenshot.html

在桌面截图示例中,他们在截取屏幕截图之前隐藏了屏幕截图实用程序的窗口,然后重新显示窗口。

因此,要将此原则应用于您的应用程序,您可以暂时以完整分辨率绘制窗口小部件,然后调用grabWidget然后重新缩放并重绘以前的分辨率。

您还可以尝试查看QPrinter的工作原理,以及是否有办法在您的应用程序中使用它。

http://qt-project.org/doc/qt-4.8/qprinter.html#details

希望有所帮助。