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">"Apple"</span> }
<span class="type"><a href="qml-listelement.html">ListElement</a></span> { <span class="name">name</span>: <span class="string">"Orange"</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">"Name: "</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">"list"</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">></span>setContextProperty(<span class="string">"dirModel"</span><span class="operator">,</span> <span class="operator">&</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">"view.qml"</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">©</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>
|