Hello all!
I'm working now at application which loads QML from a string and make screenshot of a window. And I'm surprised that there is no event which triggers when document was completly loaded;
I talk about C++ part only.

The simple example:

QByteArray data("import QtQuick 2.3\n\
import QtQuick.Window 2.2\n\
\n\
Window {\n\
visible: true\n\
    width: 360\n\
    height: 360\n\
    Text {\n\
        anchors.centerIn: parent\n\
        text: \"Hello, world!\"\n\
    }\n\
}\n\");

QQmlApplicationEngine engine;
engine.loadData(data);
QQuickWindow *rootObject = qobject_cast<QQuickWindow *>(engine.rootObjects().first());

connect(rootObject,&QQuickWindow::afterRendering,[=] () {
    QImage image = rootObject->grabWindow();
    image.save("window.png","PNG",90);
});

The execution hungs up on grabWindow(). All other events from QQuickWindow also not works.

I was surpised again when tried to call grabWindow() from QML through singleton:

Window {
    ....
    Component.onCompleted: someSingleton.makeScreenshot();
    ....
}

It makes the image but text was not centered. It says that document was not really completed yet! Or not?

So I came to conclusion that there is no way to know that a QML data was loaded.

/P.S. Sorry for asking this question in development mail list but I've asked it in all other places. It look that only Qt developers //can clarify////this question./
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to