[Qt-qml] Views and models
Cornelius Hald
hald at icandy.de
Fri Aug 6 17:14:54 CEST 2010
Hi again and sorry for all the spam :)
I´ve now managed to use XmlListModel with ListView to implement some
parts of my slide show, but somehow I think I now could use a
XmlTreeModel or something.
Let´s say the XML looks like this:
<root>
<slideshow>
<name>My First slide show</name>
<slide id="1">
<image>http://example.com/img1.jpg"</image>
<audio>http://example.com/snd1.mp3"</audio>
<text>Some text...</text>
</slide>
<slide id="2">
<image>http://example.com/img42.jpg"</image>
<audio>http://example.com/snd42.mp3"</audio>
<text>Some other text...</text>
</slide>
</slideshow>
<slideshow>
<name>My second slide show</name>
<slide>[...]</slide>
<slide>[...]</slide>
</slideshow>
</root>
Now I can create a XmlListModel like this:
XmlListModel {
id: slideshowModel
source: "slideshow.xml"
query: "/root/slideshow/slide"
XmlRole { name: "img"; query: "image/string()" }
XmlRole { name: "text"; query: "image/text()" }
}
So far, so good. I will get all sides from my first slide show. But how
can I, for example, access the <name> element of <slideshow>? And how
can I access the other slide shows?
I would like to have a list, where each element looks like this:
* slide show name: /root/slideshow/name/string()
* slide text: /root/slideshow/slide/text/string()
* slide image: /root/slideshow/slide/image/string()
* More...
I tried adding a XmlRole that accesses the parent element like:
XmlRole { name: "parentName"; query: "../name/string()" }
But without success. Is it possible to do something like that with
XmlListModel?
Thanks again!
Conny
Am 06.08.2010 13:57, schrieb Cornelius Hald:
> Hi,
>
> I´m new to QML and Qt, so please excuse my beginner questions. To get
> acquainted with QML I´m trying to do a small multi-media slide show
> thing. Basically it should show pictures with some text and play some
> audio file. A simple XML model could look like this:
>
> <slideshow>
> <slide id="1">
> <image>http://example.com/img1.jpg"</image>
> <audio>http://example.com/snd1.mp3"</audio>
> <text>Some text...</text>
> </slide>
>
> [...]
>
> <slide id="42">
> <image>http://example.com/img42.jpg"</image>
> <audio>http://example.com/snd42.mp3"</audio>
> <text>Some other text...</text>
> </slide>
>
> </slideshow>
>
> My view should have a 'previous' and a 'next' button and always show one
> picture + text + audio. Once someone clicks the 'next' button the next
> slide should be shown.
>
> Building the view was no problem and it´s working as expected, the
> problem is how to build the model for the view and how to present it to
> the view. (The view is just a .qml file, so not a view like the e.g. the
> ListView.)
>
> I´ve looked at ListModel and XmlListModel and I think they provide all I
> need on the model side. Then for the view part I looked at ListView,
> GridView and PathView, but somehow those views are made to show all
> items at once and I only want to display one item a time.
>
> Do I have to create my own *View class? If yes, do I have to do this
> with C++ or is there a way to build a custom view using only QML/JS? I
> was trying to pass a ListModel into my view just by binding properties,
> but that doesn´t seem to work.
>
> It could be that I´m missing something obvious here, if so, please tell
> me :)
>
> All pointers would be very much appreciated and if something is unclear
> I´ll provide more information.
>
> Thanks!
> Conny
> _______________________________________________
> Qt-qml mailing list
> Qt-qml at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-qml
More information about the Qt-qml
mailing list