[Qt-qml] Timer without animation ?
Gregory Schlomoff
gregory.schlomoff at gmail.com
Mon Jan 10 11:46:13 CET 2011
Hello,
The answer is yes.
One thing that QML developpers tend to forget easily is that nesting
elements inside others is not a "native" feature of the language.
Instead, it works through the default property mechanism.
Let's consider an example. When you write:
Rectangle {
Timer {...}
}
The QML engine actually interprets that as:
Rectangle {
data: [
Timer {...}
]
}
But because "data" has been declared as the default property, you
don't need to specify it. You just write your objects one inside the
other.
"data" is a property of Item [1], and since all visual items inherit
from Item, now you know why you can put a Timer inside any visual
item. QtObject, on the other hand, has only one property: QString
objectName. This is why you cannot put the timer inside it.
Now, if you want to put a Timer inside a QtObject, you at least two options :
=== Option 1 : inside a dedicated property ===
QtObject {
property Timer myTimer: Timer { ... }
}
=== Option 2 : inside a generic property ===
QtObject {
property list<QtObject> data
data: [
Timer { id: myTimer; ... }
]
}
Etc...
The best solution would be to use the second case and to declare
"data" as the default property, so that you actually get the same
syntaxt as with visual items, but for some reason it's not working. I
guess if you create your own QObject wrapper in C++ and declare the
default property there, it will be ok.
Cheers,
Greg
[1] see: http://doc.qt.nokia.com/main-snapshot/qml-item.html
On Mon, Jan 10, 2011 at 5:05 PM, Attila Csipa <qt at csipa.in.rs> wrote:
>
> Is it possible to have a Timer without having a visual item that brings in the animation timer ? Think
>
> QtObject {
> Component.onCompleted: console.log("hello world");
> Timer {
> interval: 500; running: true; repeat: true;
> onTriggered: console.log("tick");
> }
> }
>
> This gives somewhat cryptic Component is not ready error, but does work if I replace QtObject with Item. Now, you will be asking well, why don't you just use Item, and the answer is that it feels a bit weird - I'm experimenting with GUIless QML (think custom structured QtObject creation, textual UIs, etc).
>
> Best regards,
> Attila
>
> _______________________________________________
> Qt-qml mailing list
> Qt-qml at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-qml
>
More information about the Qt-qml
mailing list