[Qt-qml] How QML file is parsed and linked and executed?

jerome.pasion at nokia.com jerome.pasion at nokia.com
Tue Nov 23 21:29:05 CET 2010


Hello,

Example:
============================
import QtQuick 1.0

Rectangle {

id:screen; width: 100; height: 100

Rectangle {
    id: one; width: 10; height: 10
    Component.onCompleted: console.log("one")
}
Rectangle {
    id: two; width: 10; height: 10
    Component.onCompleted: console.log("two")
}
Rectangle {
    id: three; width: 10; height: 10
    Component.onCompleted: console.log("three")
}

Component.onCompleted: console.log("screen")
}
=================================
output:
screen
three
two
one

The top level's handler is first, then the children.
Is this a reasonable generalization to make? 

Cheers,
Jerome P.
________________________________________
From: qt-qml-bounces at trolltech.com [qt-qml-bounces at trolltech.com] On Behalf Of Iliev Ivailo (EXT-ProData/Berlin)
Sent: Tuesday, November 23, 2010 9:23 AM
To: Kennedy Aaron (Nokia-MS-Qt/Brisbane)
Cc: qt-qml at trolltech.com
Subject: Re: [Qt-qml] How QML file is parsed and linked and executed?

Hi,

ok, thanks :)

best regards,
Ivo

________________________________
From: Kennedy Aaron (Nokia-MS-Qt/Brisbane)
Sent: Tuesday, November 23, 2010 3:03 AM
To: Iliev Ivailo (EXT-ProData/Berlin)
Cc: <qt-qml at trolltech.com>
Subject: Re: [Qt-qml] How QML file is parsed and linked and executed?

Hi,

As it says in the documentation, the order Component.onCompleted handlers are executed is not defined.

Roughly speaking (as there are exceptions), elements are instantiated from top to bottom, and the onCompleted signals are executed in reverse order of instantiation.  But don't rely on that behaviour.

Cheers,

Aaron


On 22/11/2010, at 6:49 PM, ext ext-ivailo.iliev at nokia.com<mailto:ext-ivailo.iliev at nokia.com> wrote:

Hi,

as you all know HTML and JavaScript are executed / or evaluated / form the TOP to BOTTOM. So if you have a source of 100 lines it will start from line 1 and will finish with the last one. When you know this you can somehow figure our some tricks you want to make and know what to expect.

I have a QML file that I want to trace how it's reacting.

Rectangle {onCompleted: {console.col("m1")}}
Rectangle {onCompleted: {console.col("m2")}}

and in the console output I have m2, m1.

so does it mean that in QML we have stack popup priority of structure handling - you parse it from top to bottom and execute it form bottom to top? does it mean that my "later" element will always have Component.onCompleted "before"? Or this reverse order is just temporary or coincidence on my machine or we shall not  expect any order of loading - "everything will come when it comes"?

Best Regards,
Ivo
_______________________________________________
Qt-qml mailing list
Qt-qml at trolltech.com<mailto:Qt-qml at trolltech.com>
http://lists.trolltech.com/mailman/listinfo/qt-qml





More information about the Qt-qml mailing list