0

这是另一个问题的续集,我在描述我的目标时并不准确。

如链接问题中所述,我希望保存一个嵌入在 a 中QQuickWidget且大于窗口大小的 QML。该QQuickWindow grabWindow()方法仅捕获窗口区域,因此我在直观显示后尝试了以下代码:

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. 上一个问题中提出的解决方案仅抓取落在窗口内的内容。

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

附录:

我尝试了以下但没有奏效:

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);

由于没有窗口,这应该按逻辑解决窗口大小的问题。任何意见?

4

2 回答 2

2

好的,所以我通过手动移动窗口的 QMLheight并保存窗口捕获的所有图像并将其整理以形成原始图像来解决它。

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

感谢所有的答复!

于 2015-07-22T13:53:15.867 回答
0

如果您的 QML 内容大于窗口大小,则不会绘制超出屏幕的部分。因此,除非您使用 2 个监视器并扩展视图,否则无法捕捉屏幕外的内容。最后一种方法会奏效。

于 2015-07-21T16:37:12.657 回答