我
QPixmap QPixmap::grabWidget ( QWidget * widget, int x = 0, int y = 0, int width = -1, int height = -1 )
用来抓取视口QPixmap object
。
在某些情况下,即使屏幕放大到一定程度,我也想抓住那一刻将滚动出去的完整屏幕。某些变体grabwidget
或任何其他功能是否有助于实现这一点?
谢谢。
一种或另一种方式,我认为您需要将对象的分辨率设置为“屏幕截图”所需的大小。以下是一些可以尝试的不同想法:
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
希望有帮助。