0

QPixmap QPixmap::grabWidget ( QWidget * widget, int x = 0, int y = 0, int width = -1, int height = -1 ) 用来抓取视口QPixmap object

在某些情况下,即使屏幕放大到一定程度,我也想抓住那一刻将滚动出去的完整屏幕。某些变体grabwidget或任何其他功能是否有助于实现这一点?

谢谢。

4

1 回答 1

0

一种或另一种方式,我认为您需要将对象的分辨率设置为“屏幕截图”所需的大小。以下是一些可以尝试的不同想法:

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

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

希望有帮助。

于 2013-04-01T06:08:23.330 回答