我正在使用
QPixmap QPixmap::grabWidget ( QWidget * widget, int x = 0, int y = 0, int width = -1, int height = -1 )
抓取QPixmap object
中的视口。
在某些情况下,即使屏幕放大到某个级别,我也想抓住整个屏幕,这一刻将会滚动出来。 grabwidget
的某些变体或任何其他函数是否有助于此?
感谢。
答案 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
希望有所帮助。