首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QQuickwidget抓取窗口区域外的图像

QQuickwidget抓取窗口区域外的图像
EN

Stack Overflow用户
提问于 2015-07-21 23:58:54
回答 2查看 291关注 0票数 0

这是another question的续集,其中我在描述我的目标时并不准确。

正如链接的问题中所提到的,我希望保存一个嵌入在QQuickWidget中的QML,它大于窗口大小。QQuickWindow grabWindow()方法只捕获窗口区域,因此我在可视化显示后尝试了以下代码:

代码语言:javascript
复制
QQuickWidget* content..
content->setSource(QUrl("qml:/main.qml"));
QPixmap *pm = content->grab(QRect(QPoint(0,0),QSize(-1,-1));
pm->save("someFilename.png", 0, 100);

所以,这绝对不是渲染后保存图像的问题。使用的QML代码只是一个普通的Rectangle。上一个问题中提出的解决方案只捕获窗口内的内容。

有什么建议吗?谢谢!:)

附录:

我尝试了以下方法,但不起作用:

代码语言:javascript
复制
QImage paintdev(largeWidth, largeHeight, QImage:Format_RBG32);
content->render(paintdev, QPoint(0,0), QRegion(QRect(0,0,largeWidth, largeHeight), QWidget::DrawChildren);
paintdev.save(fileName, 0, 100);

这在逻辑上应该解决了窗口大小的问题,因为没有窗口。有什么意见吗?

EN

回答 2

Stack Overflow用户

发布于 2015-07-22 21:53:16

好的,所以我通过手动移动窗口height的QML并保存窗口捕获的所有图像并对其进行整理来形成原始图像,从而解决了这个问题。

虽然没有太多的工作,但我仍然对不起作用的QWidget render()方法感到困惑。

谢谢你所有的回复!

票数 2
EN

Stack Overflow用户

发布于 2015-07-22 00:37:13

如果QML内容大于窗口大小,则不会绘制屏幕外的部分。因此,除非您使用两个显示器并扩展视图,否则无法捕获屏幕外的内容。最后一种方法是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31544041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档