[Interest] Define map of static items in QML

Gianluca gmaxera at gmail.com
Wed Mar 30 10:16:34 CEST 2016


Il giorno 30/mar/2016, alle ore 07:43, Elvis Stansvik <elvstone at gmail.com> ha scritto:

> Den 30 mar 2016 8:36 fm skrev "Elvis Stansvik" <elvstone at gmail.com>:
> >
> > Hi all,
> >
> > I can understand why I can do
> >
> > property Item foo: Foo {}
> > property Item bar: Bar {}
> > property variant items: {
> >     "foo": foo,
> >     "bar": bar
> > }
> >
> > but not
> >
> > property variant items: {
> >     "foo": Foo{},
> >     "bar": Bar{}
> > }
> >
> > The first opening { in the second example probably puts me in JS territory, where the Item {} syntax is not understood as a static definition of an item.
> >
> > However, is there some way of defining a map of static items like this, without having to bind the item instances to properties first? Such that I can later do e.g. items["foo"] to access an item?
> 
> I should state my use case as well: I'm doing a small page based embedded app (less than 20 pages), based on a StackView, where I'm thankfully not hardware constrained (it's a fast PC). So I have no reason to use Loader to load pages dynamically but was thinking of keeping them all statically in a map, so that I can switch page based on the name of the page (e.g "WelcomeScreen") by calling some function or perhaps emitting a signal with the name as argument.
> 
For this use cases (and others), I usually use one of the ObjectModel, DelegateModel or Package (or the older VisualDataModel). They are wonderful for creating models containing QML object and they can created as you want. Also DelegateModel can contains groups so you can filter them, and Package let you to name the items so you can access using dot syntax: views.foo, views.bar
In your case, I will use DelegateModel and access using numeric index, but you can also explore Package and use the attached propertied Package.name to give a name to all the views.

Ciao,
Gianluca.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160330/53ba4b81/attachment.html>


More information about the Interest mailing list