c – 从Qt上的选定区域(QRubberBand)截取屏幕截图

我正在尝试创建一个Qt应用程序来从屏幕上的选定区域截取屏幕截图.目前我正在使用QRubberBand来选择屏幕区域.

它的工作原理如下.

>单击“捕获”按钮时,将弹出覆盖透明小部件(全屏但没有框架)
>我正在使用QRubberBand在透明小部件上选择一个区域.

现在我必须截取我选择的部分的屏幕截图.

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

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

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

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

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