我正在制作快照(通过带有ShaderEffectSource
的{{1}})项目,但我有时(200个案例中有1个)获得空白快照。我根据这样的信号制作快照:
live: false
这只是一个整体背景。我暂时不会发布测试用例,因为它是一个很棒的应用程序而我还没有分离出一个测试用例。这对未来的问题可能是重要的。
所以我不会问我的代码中的错误""然而。相反,我有一个简单的问题,我认为可以帮助我修复错误:
项目完成重新绘制后是否可以收到通知?
理由:也许当我得到Image {
onStatusChanged: {
if (status == Image.Ready) {
snapshotter.makeSnapshot();
}
}
}
时,图片只有已加载,并且尚未将加载的数据绘制到屏幕外表面。因此,如果我想要的信号存在,我可以挂钩它而不是挂钩status == Image.Ready
。
注意:我可以实现自己的Image.statusChanged
组件,其工作方式与NotifyingImage
类似,但另外还会公开Image
信号。但我想知道是否有内置方式。
相关问题:" Get notified when QQuickItem will need updating"。但是,提问者对知道项目数据何时更新感到满意,并且我在询问repainted
信号,这是以后发生的事情比他要求的要多。
答案 0 :(得分:2)
据我所知,Window
总是作为一个整体呈现。因此,您可以使用Window
' afterRendering
信号。
缺点:当窗口中的任何东西发生变化时,它将被触发。但结合(status == Image.Ready)
它可能适合你。
修改强>
在blog post, announcing the release of Qt5.8
Qt Companies CTO 中写道:
此外,如果场景的一小部分区域发生变化,则场景图现在支持部分更新到屏幕。这为Qt Quick 2D渲染器带来了一些更大的性能改进。
我不知道信号afterRendering
的实施细节,因此我无法判断这是否是在部分更新之后触发的,如果是,该如何判断,部分更新是否与您感兴趣的部分有关。