Try to do that inside Component.onCompleted handler. Note that, however, if you use images located remotely, then you should wait them to be loaded.
On Jan 12, 2015 9:17 AM, ruslan <rus...@khvmntk.ru> wrote: > > Hello all! > Is there any way to know when QML data was loaded into engine? > In my QML app I want to make a screenshot after all the source was loaded. > > QQmlApplicationEngine engine; > > engine.loadData(data); > > QQuickWindow *rootObject = qobject_cast<QQuickWindow > *>(p_engine.rootObjects().first()); > > QImage image = rootObject->grabWindow(); > > image.save("window.png","PNG",90); > > > > > > where data is simple QML file: > > > > import QtQuick 2.3 > > import QtQuick.Window 2.2 > > Window { > > visible: true > > width: 360 > > height: 360 > > Text { > > anchors.centerIn: parent > > text: "Hello, world!" > > } > > MouseArea { > > anchors.fill: parent > > //onClicked: someSingleton.makeScreenshot(); > > } > > } > > But image not saved just because it is empty. If I call > QQuickWindow::grabWindow() from QML, for example, after clicking at MouseArea > it works well. > > > > So from this I conclude that when I call rootObject->grabWindow() it still > not loaded completly yet. I've tried to call this function in this way: > > > > connect(rootObject,&QQuickWindow::afterRendering,[=] () { > > QImage image = rootObject->grabWindow(); > > image.save("window.png","PNG",90); > > }); > > > > But the program just hungs up in this slot and no image was saved. > > > > > _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest