Yes, I know about Component.onCompleted but I need to do that in C++ 
part. Let's say I cannot modify QML data - all I need is to load it and 
make screenshot of loaded data.

Btw, Component.onCompleted also not works. I guess at this moment, whet 
this event triggers, some data isn't ready yet.


12.01.2015 16:32, Dmitry Volosnykh пишет:
> 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

Reply via email to