File: qml-visualdatamodel.html

package info (click to toggle)
qt4-x11 4%3A4.8.2%2Bdfsg-11
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 701,696 kB
  • sloc: cpp: 2,686,179; ansic: 375,485; python: 25,859; sh: 19,349; xml: 17,091; perl: 14,765; yacc: 5,383; asm: 5,038; makefile: 1,259; lex: 555; ruby: 526; objc: 347; cs: 112; pascal: 112; php: 54; sed: 34
file content (201 lines) | stat: -rw-r--r-- 14,653 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_US" lang="en_US">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- qdeclarativevisualitemmodel.cpp -->
  <title>Qt 4.8: QML VisualDataModel Element</title>
  <link rel="stylesheet" type="text/css" href="style/offline.css" />
</head>
<body>
<div class="header" id="qtdocheader">
  <div class="content"> 
    <a href="index.html" class="qtref"><span>Qt Reference Documentation</span></a>
  </div>
  <div class="breadcrumb toolblock">
    <ul>
      <li class="first"><a href="index.html">Home</a></li>
      <!--  Breadcrumbs go here -->
<li><a href="qdeclarativeelements.html">QML Elements</a></li>
<li>QML VisualDataModel Element</li>
    </ul>
  </div>
</div>
<div class="content mainContent">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#properties">Properties</a></li>
<li class="level1"><a href="#methods">Methods</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
</ul>
</div>
<h1 class="title">QML VisualDataModel Element</h1>
<span class="subtitle"></span>
<!-- $$$VisualDataModel-brief -->
<p>The VisualDataModel encapsulates a model and delegate <a href="#details">More...</a></p>
<!-- @@@VisualDataModel -->
<ul>
<li><a href="qml-visualdatamodel-members.html">List of all members, including inherited members</a></li>
</ul>
<a name="properties"></a>
<h2>Properties</h2>
<ul>
<li class="fn"><b><b><a href="qml-visualdatamodel.html#delegate-prop">delegate</a></b></b> : Component</li>
<li class="fn"><b><b><a href="qml-visualdatamodel.html#model-prop">model</a></b></b> : model</li>
<li class="fn"><b><b><a href="qml-visualdatamodel.html#parts-prop">parts</a></b></b> : object</li>
<li class="fn"><b><b><a href="qml-visualdatamodel.html#rootIndex-prop">rootIndex</a></b></b> : QModelIndex</li>
</ul>
<a name="methods"></a>
<h2>Methods</h2>
<ul>
<li class="fn"><b><b><a href="qml-visualdatamodel.html#modelIndex-method">modelIndex</a></b></b></li>
<li class="fn"><b><b><a href="qml-visualdatamodel.html#parentModelIndex-method">parentModelIndex</a></b></b></li>
</ul>
<!-- $$$VisualDataModel-description -->
<a name="details"></a>
<h2>Detailed Description</h2>
<p>A VisualDataModel encapsulates a model and the delegate that will be instantiated for items in the model.</p>
<p>It is usually not necessary to create VisualDataModel elements. However, it can be useful for manipulating and accessing the <a href="qml-visualdatamodel.html#modelIndex-method">modelIndex</a> when a <a href="qabstractitemmodel.html">QAbstractItemModel</a> subclass is used as the model. Also, VisualDataModel is used together with <a href="qml-package.html">Package</a> to provide delegates to multiple views.</p>
<p>The example below illustrates using a VisualDataModel with a <a href="qml-listview.html">ListView</a>.</p>
<pre class="qml"> import QtQuick 1.0

 <span class="type"><a href="qml-rectangle.html">Rectangle</a></span> {
     <span class="name">width</span>: <span class="number">200</span>; <span class="name">height</span>: <span class="number">100</span>

     <span class="type">VisualDataModel</span> {
         <span class="name">id</span>: <span class="name">visualModel</span>
         <span class="name">model</span>: <span class="name">ListModel</span> {
             <span class="type"><a href="qml-listelement.html">ListElement</a></span> { <span class="name">name</span>: <span class="string">&quot;Apple&quot;</span> }
             <span class="type"><a href="qml-listelement.html">ListElement</a></span> { <span class="name">name</span>: <span class="string">&quot;Orange&quot;</span> }
         }
         <span class="name">delegate</span>: <span class="name">Rectangle</span> {
             <span class="name">height</span>: <span class="number">25</span>
             <span class="name">width</span>: <span class="number">100</span>
             <span class="type"><a href="qml-text.html">Text</a></span> { <span class="name">text</span>: <span class="string">&quot;Name: &quot;</span> <span class="operator">+</span> <span class="name">name</span>}
         }
     }

     <span class="type"><a href="qml-listview.html">ListView</a></span> {
         <span class="name">anchors</span>.fill: <span class="name">parent</span>
         <span class="name">model</span>: <span class="name">visualModel</span>
     }
 }</pre>
<!-- @@@VisualDataModel -->
<h2>Property Documentation</h2>
<!-- $$$delegate -->
<div class="qmlitem"><div class="qmlproto"><table class="qmlname"><tr valign="top" class="odd"><td class="tblQmlPropNode"><p><a name="delegate-prop"></a><span class="name">delegate</span> : <span class="type"><a href="qml-component.html">Component</a></span></p></td></tr></table></div><div class="qmldoc"><p>The delegate provides a template defining each item instantiated by a view. The index is exposed as an accessible <tt>index</tt> property. Properties of the model are also available depending upon the type of <a href="qdeclarativemodels.html#qmlmodels">Data Model</a>.</p>
</div></div><!-- @@@delegate -->
<br/>
<!-- $$$model -->
<div class="qmlitem"><div class="qmlproto"><table class="qmlname"><tr valign="top" class="odd"><td class="tblQmlPropNode"><p><a name="model-prop"></a><span class="name">model</span> : <span class="type">model</span></p></td></tr></table></div><div class="qmldoc"><p>This property holds the model providing data for the <a href="qml-visualdatamodel.html">VisualDataModel</a>.</p>
<p>The model provides a set of data that is used to create the items for a view. For large or dynamic datasets the model is usually provided by a C++ model object. The C++ model object must be a <a href="qabstractitemmodel.html">QAbstractItemModel</a> subclass or a simple list.</p>
<p>Models can also be created directly in QML, using a <a href="qml-listmodel.html">ListModel</a> or <a href="qml-xmllistmodel.html">XmlListModel</a>.</p>
<p><b>See also </b><a href="qdeclarativemodels.html#qmlmodels">Data Models</a>.</p>
</div></div><!-- @@@model -->
<br/>
<!-- $$$parts -->
<div class="qmlitem"><div class="qmlproto"><table class="qmlname"><tr valign="top" class="odd"><td class="tblQmlPropNode"><p><a name="parts-prop"></a><span class="qmlreadonly">read-only</span><span class="name">parts</span> : <span class="type">object</span></p></td></tr></table></div><div class="qmldoc"><p>The <i>parts</i> property selects a <a href="qml-visualdatamodel.html">VisualDataModel</a> which creates delegates from the part named. This is used in conjunction with the <a href="qml-package.html">Package</a> element.</p>
<p>For example, the code below selects a model which creates delegates named <i>list</i> from a <a href="qml-package.html">Package</a>:</p>
<pre class="cpp"> VisualDataModel {
     id: visualModel
     delegate: Package {
         Item { Package<span class="operator">.</span>name: <span class="string">&quot;list&quot;</span> }
     }
     model: myModel
 }

 ListView {
     width: <span class="number">200</span>; height:<span class="number">200</span>
     model: visualModel<span class="operator">.</span>parts<span class="operator">.</span>list
 }</pre>
<p><b>See also </b><a href="qml-package.html">Package</a>.</p>
</div></div><!-- @@@parts -->
<br/>
<!-- $$$rootIndex -->
<div class="qmlitem"><div class="qmlproto"><table class="qmlname"><tr valign="top" class="odd"><td class="tblQmlPropNode"><p><a name="rootIndex-prop"></a><span class="name">rootIndex</span> : <span class="type"><a href="qmodelindex.html">QModelIndex</a></span></p></td></tr></table></div><div class="qmldoc"><p><a href="qabstractitemmodel.html">QAbstractItemModel</a> provides a hierarchical tree of data, whereas QML only operates on list data. <tt>rootIndex</tt> allows the children of any node in a <a href="qabstractitemmodel.html">QAbstractItemModel</a> to be provided by this model.</p>
<p>This property only affects models of type <a href="qabstractitemmodel.html">QAbstractItemModel</a> that are hierarchical (e.g, a tree model).</p>
<p>For example, here is a simple interactive file system browser. When a directory name is clicked, the view's <tt>rootIndex</tt> is set to the <a href="qmodelindex.html">QModelIndex</a> node of the clicked directory, thus updating the view to show the new directory's contents.</p>
<p><tt>main.cpp</tt>:</p>
<pre class="cpp"> <span class="type">int</span> main(<span class="type">int</span> argc<span class="operator">,</span> <span class="type">char</span> <span class="operator">*</span><span class="operator">*</span> argv)
 {
     <span class="type"><a href="qapplication.html">QApplication</a></span> app(argc<span class="operator">,</span> argv);

     <span class="type"><a href="qdeclarativeview.html">QDeclarativeView</a></span> view;

     <span class="type"><a href="qdirmodel.html">QDirModel</a></span> model;
     view<span class="operator">.</span>rootContext()<span class="operator">-</span><span class="operator">&gt;</span>setContextProperty(<span class="string">&quot;dirModel&quot;</span><span class="operator">,</span> <span class="operator">&amp;</span>model);

     view<span class="operator">.</span>setSource(<span class="type"><a href="qurl.html">QUrl</a></span><span class="operator">::</span>fromLocalFile(<span class="string">&quot;view.qml&quot;</span>));
     view<span class="operator">.</span>show();

     <span class="keyword">return</span> app<span class="operator">.</span>exec();
 }</pre>
<p><tt>view.qml</tt>:</p>
<pre class="qml"> import QtQuick 1.0

 <span class="type"><a href="qml-listview.html">ListView</a></span> {
     <span class="name">id</span>: <span class="name">view</span>
     <span class="name">width</span>: <span class="number">300</span>
     <span class="name">height</span>: <span class="number">400</span>

     <span class="name">model</span>: <span class="name">VisualDataModel</span> {
         <span class="name">model</span>: <span class="name">dirModel</span>

         <span class="name">delegate</span>: <span class="name">Rectangle</span> {
             <span class="name">width</span>: <span class="number">200</span>; <span class="name">height</span>: <span class="number">25</span>
             <span class="type"><a href="qml-text.html">Text</a></span> { <span class="name">text</span>: <span class="name">filePath</span> }

             <span class="type"><a href="qml-mousearea.html">MouseArea</a></span> {
                 <span class="name">anchors</span>.fill: <span class="name">parent</span>
                 <span class="name">onClicked</span>: {
                     <span class="keyword">if</span> (<span class="name">model</span>.<span class="name">hasModelChildren</span>)
                         <span class="name">view</span>.<span class="name">model</span>.<span class="name">rootIndex</span> <span class="operator">=</span> <span class="name">view</span>.<span class="name">model</span>.<span class="name">modelIndex</span>(<span class="name">index</span>)
                 }
             }
         }
     }
 }</pre>
<p>If the <a href="qml-visualdatamodel.html#model-prop">model</a> is a <a href="qabstractitemmodel.html">QAbstractItemModel</a> subclass, the delegate can also reference a <tt>hasModelChildren</tt> property (optionally qualified by a <i>model</i>. prefix) that indicates whether the delegate's model item has any child nodes.</p>
<p><b>See also </b><a href="qml-visualdatamodel.html#modelIndex-method">modelIndex()</a> and <a href="qml-visualdatamodel.html#parentModelIndex-method">parentModelIndex()</a>.</p>
</div></div><!-- @@@rootIndex -->
<br/>
<h2>Method Documentation</h2>
<!-- $$$modelIndex -->
<div class="qmlitem"><div class="qmlproto"><table class="qmlname"><tr valign="top" class="odd"><td class="tblQmlFuncNode"><p><a name="modelIndex-method"></a><span class="type"><a href="qmodelindex.html">QModelIndex</a></span> VisualDataModel::<span class="name">modelIndex</span> ( <span class="type"><a href="qml-int.html">int</a></span> <i>index</i> )</p></td></tr></table></div><div class="qmldoc"><p><a href="qabstractitemmodel.html">QAbstractItemModel</a> provides a hierarchical tree of data, whereas QML only operates on list data. This function assists in using tree models in QML.</p>
<p>Returns a <a href="qmodelindex.html">QModelIndex</a> for the specified index. This value can be assigned to <a href="qml-visualdatamodel.html#rootIndex-prop">rootIndex</a>.</p>
<p><b>See also </b><a href="qml-visualdatamodel.html#rootIndex-prop">rootIndex</a>.</p>
</div></div><!-- @@@modelIndex -->
<br/>
<!-- $$$parentModelIndex -->
<div class="qmlitem"><div class="qmlproto"><table class="qmlname"><tr valign="top" class="odd"><td class="tblQmlFuncNode"><p><a name="parentModelIndex-method"></a><span class="type"><a href="qmodelindex.html">QModelIndex</a></span> VisualDataModel::<span class="name">parentModelIndex</span> ()</p></td></tr></table></div><div class="qmldoc"><p><a href="qabstractitemmodel.html">QAbstractItemModel</a> provides a hierarchical tree of data, whereas QML only operates on list data. This function assists in using tree models in QML.</p>
<p>Returns a <a href="qmodelindex.html">QModelIndex</a> for the parent of the current <a href="qml-visualdatamodel.html#rootIndex-prop">rootIndex</a>. This value can be assigned to <a href="qml-visualdatamodel.html#rootIndex-prop">rootIndex</a>.</p>
<p><b>See also </b><a href="qml-visualdatamodel.html#rootIndex-prop">rootIndex</a>.</p>
</div></div><!-- @@@parentModelIndex -->
<br/>
  <div class="ft">
    <span></span>
  </div>
</div> 
<div class="footer">
    <p>
      <acronym title="Copyright">&copy;</acronym> 2012 Nokia Corporation and/or its
      subsidiaries. Documentation contributions included herein are the copyrights of
      their respective owners.</p>
    <br />
    <p>
      The documentation provided herein is licensed under the terms of the
      <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation
      License version 1.3</a> as published by the Free Software Foundation.</p>
    <p>
      Documentation sources may be obtained from <a href="http://www.qt-project.org">
      www.qt-project.org</a>.</p>
    <br />
    <p>
      Nokia, Qt and their respective logos are trademarks of Nokia Corporation 
      in Finland and/or other countries worldwide. All other trademarks are property
      of their respective owners. <a title="Privacy Policy"
      href="http://en.gitorious.org/privacy_policy/">Privacy Policy</a></p>
</div>
</body>
</html>