在Qt上从所选区域(QRubberBand)截取屏幕截图

时间:2014-07-10 01:28:10

标签: c++ qt

我正在尝试创建一个Qt应用程序,以从屏幕上的选定区域截取屏幕截图。目前我正在使用QRubberBand来选择屏幕区域。 它的工作原理如下。

  1. 当点击捕获按钮时,将弹出覆盖透明小部件(全屏但没有框架)
  2. 我正在使用QRubberBand在透明小部件上选择一个区域。
  3. 现在我必须截取我选择的部分的屏幕截图。

    我想我必须将选择QRubberBand的尺寸传递给它:

    screen->grabWindow( WId window, int x = 0, int y = 0, int width = -1, int height = -1 );

    那么如何从QRubberBand获取我需要的信息? 我被困在这里,所以有人请帮助我!

1 个答案:

答案 0 :(得分:2)

OnMouseRelease事件中,您可以使用QRubberBand获取geometry()的矩形。接下来使用QRect::getRect,您可以将矩形左上角的位置提取到x和y,将其尺寸提取到宽度和高度。 :

const QRect & selectRect = mRubberBand->geometry();
int x, y, width, height;
selectRect.getRect(&x, &y, &width, &height);