Qt窗口的一小部分中的屏幕截图

Qt窗口的一小部分中的屏幕截图,qt,screenshot,Qt,Screenshot,我想能够采取我的程序截图,并保存为png(或如果它是可能的pdf格式)。我已经从Qt获取了截图示例。这将从整个屏幕截图。但我只想从我的窗口的一部分截图,即使它在显示器的另一个位置。我该怎么做呢。有函数吗?关于QWidget::render()?关于QWidget::render()?检查窗口以获取其位置和大小。如果你想在截图中看到任何特定的元素,你可以得到它的位置和大小。否则,您将不得不使用与窗口位置的偏移,这可能会导致问题(例如,调整窗口大小时) 获取屏幕截图,然后使用之前的位置/大小重新绘制

我想能够采取我的程序截图,并保存为png(或如果它是可能的pdf格式)。我已经从Qt获取了截图示例。这将从整个屏幕截图。但我只想从我的窗口的一部分截图,即使它在显示器的另一个位置。我该怎么做呢。有函数吗?

关于
QWidget::render
()?

关于
QWidget::render
()?

检查窗口以获取其位置和大小。如果你想在截图中看到任何特定的元素,你可以得到它的位置和大小。否则,您将不得不使用与窗口位置的偏移,这可能会导致问题(例如,调整窗口大小时)

获取屏幕截图,然后使用之前的位置/大小重新绘制pixmap

有一个缺点:拍摄整个桌面的快照有点慢


因此,更好的解决方案可能是更改应用程序:将要保存的部分渲染到屏幕外缓冲区中。然后,您可以使用此缓冲区呈现UI,同时保存屏幕截图。

检查窗口以获取其位置和大小。如果你想在截图中看到任何特定的元素,你可以得到它的位置和大小。否则,您将不得不使用与窗口位置的偏移,这可能会导致问题(例如,调整窗口大小时)

获取屏幕截图,然后使用之前的位置/大小重新绘制pixmap

有一个缺点:拍摄整个桌面的快照有点慢


因此,更好的解决方案可能是更改应用程序:将要保存的部分渲染到屏幕外缓冲区中。然后,您可以使用此缓冲区来呈现UI并同时保存屏幕截图。

QPixmap的
static
功能是您的朋友。您可以轻松获取所提供小部件的pixmap,然后将其保存为所需的任何格式:

QPixmap p = QPixmap::grabWidget(widget);
p.save("p.png");

QPixmap
static
功能是您的朋友。您可以轻松获取所提供小部件的pixmap,然后将其保存为所需的任何格式:

QPixmap p = QPixmap::grabWidget(widget);
p.save("p.png");