File: qsqlquerymodel.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 (297 lines) | stat: -rw-r--r-- 30,764 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
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
<?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" />
<!-- qsqlquerymodel.cpp -->
  <title>Qt 4.8: QSqlQueryModel Class Reference</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="modules.html">Modules</a></li>
<li><a href="qtsql.html">QtSql</a></li>
<li>QSqlQueryModel</li>
    </ul>
  </div>
</div>
<div class="content mainContent">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#public-functions">Public Functions</a></li>
<li class="level1"><a href="#protected-functions">Protected Functions</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
</ul>
</div>
<h1 class="title">QSqlQueryModel Class Reference</h1>
<!-- $$$QSqlQueryModel-brief -->
<p>The QSqlQueryModel class provides a read-only data model for SQL result sets. <a href="#details">More...</a></p>
<!-- @@@QSqlQueryModel -->
<pre class="cpp"> <span class="preprocessor">#include &lt;QSqlQueryModel&gt;</span></pre><p><b>Inherits: </b><a href="qabstracttablemodel.html">QAbstractTableModel</a>.</p>
<p><b>Inherited by: </b><a href="qsqltablemodel.html">QSqlTableModel</a>.</p>
<ul>
<li><a href="qsqlquerymodel-members.html">List of all members, including inherited members</a></li>
</ul>
<a name="public-functions"></a>
<h2>Public Functions</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#QSqlQueryModel">QSqlQueryModel</a></b> ( QObject * <i>parent</i> = 0 )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#dtor.QSqlQueryModel">~QSqlQueryModel</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#clear">clear</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QSqlError </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#lastError">lastError</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QSqlQuery </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#query">query</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QSqlRecord </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#record">record</a></b> ( int <i>row</i> ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QSqlRecord </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#record-2">record</a></b> () const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#setQuery">setQuery</a></b> ( const QSqlQuery &amp; <i>query</i> )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#setQuery-2">setQuery</a></b> ( const QString &amp; <i>query</i>, const QSqlDatabase &amp; <i>db</i> = QSqlDatabase() )</td></tr>
</table>
<a name="reimplemented-public-functions"></a>
<h2>Reimplemented Public Functions</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> virtual bool </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#canFetchMore">canFetchMore</a></b> ( const QModelIndex &amp; <i>parent</i> = QModelIndex() ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual int </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#columnCount">columnCount</a></b> ( const QModelIndex &amp; <i>index</i> = QModelIndex() ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual QVariant </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#data">data</a></b> ( const QModelIndex &amp; <i>item</i>, int <i>role</i> = Qt::DisplayRole ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#fetchMore">fetchMore</a></b> ( const QModelIndex &amp; <i>parent</i> = QModelIndex() )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual QVariant </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#headerData">headerData</a></b> ( int <i>section</i>, Qt::Orientation <i>orientation</i>, int <i>role</i> = Qt::DisplayRole ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual bool </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#insertColumns">insertColumns</a></b> ( int <i>column</i>, int <i>count</i>, const QModelIndex &amp; <i>parent</i> = QModelIndex() )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual bool </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#removeColumns">removeColumns</a></b> ( int <i>column</i>, int <i>count</i>, const QModelIndex &amp; <i>parent</i> = QModelIndex() )</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual int </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#rowCount">rowCount</a></b> ( const QModelIndex &amp; <i>parent</i> = QModelIndex() ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual bool </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#setHeaderData">setHeaderData</a></b> ( int <i>section</i>, Qt::Orientation <i>orientation</i>, const QVariant &amp; <i>value</i>, int <i>role</i> = Qt::EditRole )</td></tr>
</table>
<ul>
<li class="fn">2 public functions inherited from <a href="qabstracttablemodel.html#public-functions">QAbstractTableModel</a></li>
<li class="fn">35 public functions inherited from <a href="qabstractitemmodel.html#public-functions">QAbstractItemModel</a></li>
<li class="fn">29 public functions inherited from <a href="qobject.html#public-functions">QObject</a></li>
</ul>
<a name="protected-functions"></a>
<h2>Protected Functions</h2>
<table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> QModelIndex </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#indexInQuery">indexInQuery</a></b> ( const QModelIndex &amp; <i>item</i> ) const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> virtual void </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#queryChange">queryChange</a></b> ()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qsqlquerymodel.html#setLastError">setLastError</a></b> ( const QSqlError &amp; <i>error</i> )</td></tr>
</table>
<ul>
<li class="fn">21 protected functions inherited from <a href="qabstractitemmodel.html#protected-functions">QAbstractItemModel</a></li>
<li class="fn">8 protected functions inherited from <a href="qobject.html#protected-functions">QObject</a></li>
</ul>
<h3>Additional Inherited Members</h3>
<ul>
<li class="fn">1 property inherited from <a href="qobject.html#properties">QObject</a></li>
<li class="fn">2 public slots inherited from <a href="qabstractitemmodel.html#public-slots">QAbstractItemModel</a></li>
<li class="fn">1 public slot inherited from <a href="qobject.html#public-slots">QObject</a></li>
<li class="fn">18 signals inherited from <a href="qabstractitemmodel.html#signals">QAbstractItemModel</a></li>
<li class="fn">1 signal inherited from <a href="qobject.html#signals">QObject</a></li>
<li class="fn">7 static public members inherited from <a href="qobject.html#static-public-members">QObject</a></li>
<li class="fn">1 protected slot inherited from <a href="qabstractitemmodel.html#protected-slots">QAbstractItemModel</a></li>
</ul>
<a name="details"></a>
<!-- $$$QSqlQueryModel-description -->
<div class="descr">
<h2>Detailed Description</h2>
<p>The QSqlQueryModel class provides a read-only data model for SQL result sets.</p>
<p>QSqlQueryModel is a high-level interface for executing SQL statements and traversing the result set. It is built on top of the lower-level <a href="qsqlquery.html">QSqlQuery</a> and can be used to provide data to view classes such as <a href="qtableview.html">QTableView</a>. For example:</p>
<pre class="cpp">     <span class="type">QSqlQueryModel</span> <span class="operator">*</span>model <span class="operator">=</span> <span class="keyword">new</span> <span class="type">QSqlQueryModel</span>;
     model<span class="operator">-</span><span class="operator">&gt;</span>setQuery(<span class="string">&quot;SELECT name, salary FROM employee&quot;</span>);
     model<span class="operator">-</span><span class="operator">&gt;</span>setHeaderData(<span class="number">0</span><span class="operator">,</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>Horizontal<span class="operator">,</span> tr(<span class="string">&quot;Name&quot;</span>));
     model<span class="operator">-</span><span class="operator">&gt;</span>setHeaderData(<span class="number">1</span><span class="operator">,</span> <span class="type"><a href="qt.html">Qt</a></span><span class="operator">::</span>Horizontal<span class="operator">,</span> tr(<span class="string">&quot;Salary&quot;</span>));

     <span class="type"><a href="qtableview.html">QTableView</a></span> <span class="operator">*</span>view <span class="operator">=</span> <span class="keyword">new</span> <span class="type"><a href="qtableview.html">QTableView</a></span>;
     view<span class="operator">-</span><span class="operator">&gt;</span>setModel(model);
     view<span class="operator">-</span><span class="operator">&gt;</span>show();</pre>
<p>We set the model's query, then we set up the labels displayed in the view header.</p>
<p>QSqlQueryModel can also be used to access a database programmatically, without binding it to a view:</p>
<pre class="cpp">     <span class="type">QSqlQueryModel</span> model;
     model<span class="operator">.</span>setQuery(<span class="string">&quot;SELECT * FROM employee&quot;</span>);
     <span class="type">int</span> salary <span class="operator">=</span> model<span class="operator">.</span>record(<span class="number">4</span>)<span class="operator">.</span>value(<span class="string">&quot;salary&quot;</span>)<span class="operator">.</span>toInt();</pre>
<p>The code snippet above extracts the <tt>salary</tt> field from record 4 in the result set of the query <tt>SELECT * from employee</tt>. Assuming that <tt>salary</tt> is column 2, we can rewrite the last line as follows:</p>
<pre class="cpp">     <span class="type">int</span> salary <span class="operator">=</span> model<span class="operator">.</span>data(model<span class="operator">.</span>index(<span class="number">4</span><span class="operator">,</span> <span class="number">2</span>))<span class="operator">.</span>toInt();</pre>
<p>The model is read-only by default. To make it read-write, you must subclass it and reimplement <a href="qabstractitemmodel.html#setData">setData</a>() and <a href="qabstractitemmodel.html#flags">flags</a>(). Another option is to use <a href="qsqltablemodel.html">QSqlTableModel</a>, which provides a read-write model based on a single database table.</p>
<p>The <a href="sql-querymodel.html">sql/querymodel</a> example illustrates how to use QSqlQueryModel to display the result of a query. It also shows how to subclass QSqlQueryModel to customize the contents of the data before showing it to the user, and how to create a read-write model based on QSqlQueryModel.</p>
<p>If the database doesn't return the amount of selected rows in a query, the model will fetch rows incrementally. See <a href="qsqlquerymodel.html#fetchMore">fetchMore</a>() for more information.</p>
</div>
<p><b>See also </b><a href="qsqltablemodel.html">QSqlTableModel</a>, <a href="qsqlrelationaltablemodel.html">QSqlRelationalTableModel</a>, <a href="qsqlquery.html">QSqlQuery</a>, <a href="model-view-programming.html">Model/View Programming</a>, and <a href="sql-querymodel.html">Query Model Example</a>.</p>
<!-- @@@QSqlQueryModel -->
<div class="func">
<h2>Member Function Documentation</h2>
<!-- $$$QSqlQueryModel[overload1]$$$QSqlQueryModelQObject* -->
<h3 class="fn"><a name="QSqlQueryModel"></a>QSqlQueryModel::<span class="name">QSqlQueryModel</span> ( <span class="type"><a href="qobject.html">QObject</a></span> * <i>parent</i> = 0 )</h3>
<p>Creates an empty <a href="qsqlquerymodel.html">QSqlQueryModel</a> with the given <i>parent</i>.</p>
<!-- @@@QSqlQueryModel -->
<!-- $$$~QSqlQueryModel[overload1]$$$~QSqlQueryModel -->
<h3 class="fn"><a name="dtor.QSqlQueryModel"></a>QSqlQueryModel::<span class="name">~QSqlQueryModel</span> ()<tt> [virtual]</tt></h3>
<p>Destroys the object and frees any allocated resources.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#clear">clear</a>().</p>
<!-- @@@~QSqlQueryModel -->
<!-- $$$canFetchMore[overload1]$$$canFetchMoreconstQModelIndex& -->
<h3 class="fn"><a name="canFetchMore"></a><span class="type">bool</span> QSqlQueryModel::<span class="name">canFetchMore</span> ( const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>parent</i> = QModelIndex() ) const<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#canFetchMore">QAbstractItemModel::canFetchMore</a>().</p>
<p>Returns true if it is possible to read more rows from the database. This only affects databases that don't report back the size of a query (see <a href="qsqldriver.html#hasFeature">QSqlDriver::hasFeature</a>()).</p>
<p><i>parent</i> should always be an invalid <a href="qmodelindex.html">QModelIndex</a>.</p>
<p>This function was introduced in Qt 4.1.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#fetchMore">fetchMore</a>().</p>
<!-- @@@canFetchMore -->
<!-- $$$clear[overload1]$$$clear -->
<h3 class="fn"><a name="clear"></a><span class="type">void</span> QSqlQueryModel::<span class="name">clear</span> ()<tt> [virtual]</tt></h3>
<p>Clears the model and releases any acquired resource.</p>
<!-- @@@clear -->
<!-- $$$columnCount[overload1]$$$columnCountconstQModelIndex& -->
<h3 class="fn"><a name="columnCount"></a><span class="type">int</span> QSqlQueryModel::<span class="name">columnCount</span> ( const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>index</i> = QModelIndex() ) const<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#columnCount">QAbstractItemModel::columnCount</a>().</p>
<!-- @@@columnCount -->
<!-- $$$data[overload1]$$$dataconstQModelIndex&int -->
<h3 class="fn"><a name="data"></a><span class="type"><a href="qvariant.html">QVariant</a></span> QSqlQueryModel::<span class="name">data</span> ( const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>item</i>, <span class="type">int</span> <i>role</i> = Qt::DisplayRole ) const<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#data">QAbstractItemModel::data</a>().</p>
<p>Returns the value for the specified <i>item</i> and <i>role</i>.</p>
<p>If <i>item</i> is out of bounds or if an error occurred, an invalid <a href="qvariant.html">QVariant</a> is returned.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<!-- @@@data -->
<!-- $$$fetchMore[overload1]$$$fetchMoreconstQModelIndex& -->
<h3 class="fn"><a name="fetchMore"></a><span class="type">void</span> QSqlQueryModel::<span class="name">fetchMore</span> ( const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>parent</i> = QModelIndex() )<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#fetchMore">QAbstractItemModel::fetchMore</a>().</p>
<p>Fetches more rows from a database. This only affects databases that don't report back the size of a query (see <a href="qsqldriver.html#hasFeature">QSqlDriver::hasFeature</a>()).</p>
<p>To force fetching of the entire result set, you can use the following:</p>
<pre class="cpp"> <span class="keyword">while</span> (myModel<span class="operator">-</span><span class="operator">&gt;</span>canFetchMore())
     myModel<span class="operator">-</span><span class="operator">&gt;</span>fetchMore();</pre>
<p><i>parent</i> should always be an invalid <a href="qmodelindex.html">QModelIndex</a>.</p>
<p>This function was introduced in Qt 4.1.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#canFetchMore">canFetchMore</a>().</p>
<!-- @@@fetchMore -->
<!-- $$$headerData[overload1]$$$headerDataintQt::Orientationint -->
<h3 class="fn"><a name="headerData"></a><span class="type"><a href="qvariant.html">QVariant</a></span> QSqlQueryModel::<span class="name">headerData</span> ( <span class="type">int</span> <i>section</i>, <span class="type"><a href="qt.html#Orientation-enum">Qt::Orientation</a></span> <i>orientation</i>, <span class="type">int</span> <i>role</i> = Qt::DisplayRole ) const<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#headerData">QAbstractItemModel::headerData</a>().</p>
<p>Returns the header data for the given <i>role</i> in the <i>section</i> of the header with the specified <i>orientation</i>.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#setHeaderData">setHeaderData</a>().</p>
<!-- @@@headerData -->
<!-- $$$indexInQuery[overload1]$$$indexInQueryconstQModelIndex& -->
<h3 class="fn"><a name="indexInQuery"></a><span class="type"><a href="qmodelindex.html">QModelIndex</a></span> QSqlQueryModel::<span class="name">indexInQuery</span> ( const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>item</i> ) const<tt> [protected]</tt></h3>
<p>Returns the index of the value in the database result set for the given <i>item</i> in the model.</p>
<p>The return value is identical to <i>item</i> if no columns or rows have been inserted, removed, or moved around.</p>
<p>Returns an invalid model index if <i>item</i> is out of bounds or if <i>item</i> does not point to a value in the result set.</p>
<p><b>See also </b><a href="qsqltablemodel.html#indexInQuery">QSqlTableModel::indexInQuery</a>(), <a href="qsqlquerymodel.html#insertColumns">insertColumns</a>(), and <a href="qsqlquerymodel.html#removeColumns">removeColumns</a>().</p>
<!-- @@@indexInQuery -->
<!-- $$$insertColumns[overload1]$$$insertColumnsintintconstQModelIndex& -->
<h3 class="fn"><a name="insertColumns"></a><span class="type">bool</span> QSqlQueryModel::<span class="name">insertColumns</span> ( <span class="type">int</span> <i>column</i>, <span class="type">int</span> <i>count</i>, const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>parent</i> = QModelIndex() )<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#insertColumns">QAbstractItemModel::insertColumns</a>().</p>
<p>Inserts <i>count</i> columns into the model at position <i>column</i>. The <i>parent</i> parameter must always be an invalid <a href="qmodelindex.html">QModelIndex</a>, since the model does not support parent-child relationships.</p>
<p>Returns true if <i>column</i> is within bounds; otherwise returns false.</p>
<p>By default, inserted columns are empty. To fill them with data, reimplement <a href="qsqlquerymodel.html#data">data</a>() and handle any inserted column separately:</p>
<pre class="cpp"> <span class="type"><a href="qvariant.html">QVariant</a></span> MyModel<span class="operator">::</span><a href="qsqlquerymodel.html#data">data</a>(<span class="keyword">const</span> <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> <span class="operator">&amp;</span>item<span class="operator">,</span> <span class="type">int</span> role) <span class="keyword">const</span>
 {
     <span class="keyword">if</span> (item<span class="operator">.</span>column() <span class="operator">=</span><span class="operator">=</span> m_specialColumnNo) {
         <span class="comment">// handle column separately</span>
     }
     <span class="keyword">return</span> <span class="type"><a href="qsqlquerymodel.html">QSqlQueryModel</a></span><span class="operator">::</span>data(item<span class="operator">,</span> role);
 }</pre>
<p><b>See also </b><a href="qsqlquerymodel.html#removeColumns">removeColumns</a>().</p>
<!-- @@@insertColumns -->
<!-- $$$lastError[overload1]$$$lastError -->
<h3 class="fn"><a name="lastError"></a><span class="type"><a href="qsqlerror.html">QSqlError</a></span> QSqlQueryModel::<span class="name">lastError</span> () const</h3>
<p>Returns information about the last error that occurred on the database.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#setLastError">setLastError</a>() and <a href="qsqlquerymodel.html#query">query</a>().</p>
<!-- @@@lastError -->
<!-- $$$query[overload1]$$$query -->
<h3 class="fn"><a name="query"></a><span class="type"><a href="qsqlquery.html">QSqlQuery</a></span> QSqlQueryModel::<span class="name">query</span> () const</h3>
<p>Returns the <a href="qsqlquery.html">QSqlQuery</a> associated with this model.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#setQuery">setQuery</a>().</p>
<!-- @@@query -->
<!-- $$$queryChange[overload1]$$$queryChange -->
<h3 class="fn"><a name="queryChange"></a><span class="type">void</span> QSqlQueryModel::<span class="name">queryChange</span> ()<tt> [virtual protected]</tt></h3>
<p>This virtual function is called whenever the query changes. The default implementation does nothing.</p>
<p><a href="qsqlquerymodel.html#query">query</a>() returns the new query.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#query">query</a>() and <a href="qsqlquerymodel.html#setQuery">setQuery</a>().</p>
<!-- @@@queryChange -->
<!-- $$$record[overload1]$$$recordint -->
<h3 class="fn"><a name="record"></a><span class="type"><a href="qsqlrecord.html">QSqlRecord</a></span> QSqlQueryModel::<span class="name">record</span> ( <span class="type">int</span> <i>row</i> ) const</h3>
<p>Returns the record containing information about the fields of the current query. If <i>row</i> is the index of a valid row, the record will be populated with values from that row.</p>
<p>If the model is not initialized, an empty record will be returned.</p>
<p><b>See also </b><a href="qsqlrecord.html#isEmpty">QSqlRecord::isEmpty</a>().</p>
<!-- @@@record -->
<!-- $$$record$$$record -->
<h3 class="fn"><a name="record-2"></a><span class="type"><a href="qsqlrecord.html">QSqlRecord</a></span> QSqlQueryModel::<span class="name">record</span> () const</h3>
<p>This is an overloaded function.</p>
<p>Returns an empty record containing information about the fields of the current query.</p>
<p>If the model is not initialized, an empty record will be returned.</p>
<p><b>See also </b><a href="qsqlrecord.html#isEmpty">QSqlRecord::isEmpty</a>().</p>
<!-- @@@record -->
<!-- $$$removeColumns[overload1]$$$removeColumnsintintconstQModelIndex& -->
<h3 class="fn"><a name="removeColumns"></a><span class="type">bool</span> QSqlQueryModel::<span class="name">removeColumns</span> ( <span class="type">int</span> <i>column</i>, <span class="type">int</span> <i>count</i>, const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>parent</i> = QModelIndex() )<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#removeColumns">QAbstractItemModel::removeColumns</a>().</p>
<p>Removes <i>count</i> columns from the model starting from position <i>column</i>. The <i>parent</i> parameter must always be an invalid <a href="qmodelindex.html">QModelIndex</a>, since the model does not support parent-child relationships.</p>
<p>Removing columns effectively hides them. It does not affect the underlying <a href="qsqlquery.html">QSqlQuery</a>.</p>
<p>Returns true if the columns were removed; otherwise returns false.</p>
<!-- @@@removeColumns -->
<!-- $$$rowCount[overload1]$$$rowCountconstQModelIndex& -->
<h3 class="fn"><a name="rowCount"></a><span class="type">int</span> QSqlQueryModel::<span class="name">rowCount</span> ( const <span class="type"><a href="qmodelindex.html">QModelIndex</a></span> &amp; <i>parent</i> = QModelIndex() ) const<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#rowCount">QAbstractItemModel::rowCount</a>().</p>
<p>If the database supports returning the size of a query (see <a href="qsqldriver.html#hasFeature">QSqlDriver::hasFeature</a>()), the amount of rows of the current query is returned. Otherwise, returns the amount of rows currently cached on the client.</p>
<p><i>parent</i> should always be an invalid <a href="qmodelindex.html">QModelIndex</a>.</p>
<p>This function was introduced in Qt 4.1.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#canFetchMore">canFetchMore</a>() and <a href="qsqldriver.html#hasFeature">QSqlDriver::hasFeature</a>().</p>
<!-- @@@rowCount -->
<!-- $$$setHeaderData[overload1]$$$setHeaderDataintQt::OrientationconstQVariant&int -->
<h3 class="fn"><a name="setHeaderData"></a><span class="type">bool</span> QSqlQueryModel::<span class="name">setHeaderData</span> ( <span class="type">int</span> <i>section</i>, <span class="type"><a href="qt.html#Orientation-enum">Qt::Orientation</a></span> <i>orientation</i>, const <span class="type"><a href="qvariant.html">QVariant</a></span> &amp; <i>value</i>, <span class="type">int</span> <i>role</i> = Qt::EditRole )<tt> [virtual]</tt></h3>
<p>Reimplemented from <a href="qabstractitemmodel.html#setHeaderData">QAbstractItemModel::setHeaderData</a>().</p>
<p>Sets the caption for a horizontal header for the specified <i>role</i> to <i>value</i>. This is useful if the model is used to display data in a view (e.g&#x2e;, <a href="qtableview.html">QTableView</a>).</p>
<p>Returns true if <i>orientation</i> is <a href="qt.html#Orientation-enum">Qt::Horizontal</a> and the <i>section</i> refers to a valid section; otherwise returns false.</p>
<p>Note that this function cannot be used to modify values in the database since the model is read-only.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#headerData">headerData</a>() and <a href="qsqlquerymodel.html#data">data</a>().</p>
<!-- @@@setHeaderData -->
<!-- $$$setLastError[overload1]$$$setLastErrorconstQSqlError& -->
<h3 class="fn"><a name="setLastError"></a><span class="type">void</span> QSqlQueryModel::<span class="name">setLastError</span> ( const <span class="type"><a href="qsqlerror.html">QSqlError</a></span> &amp; <i>error</i> )<tt> [protected]</tt></h3>
<p>Protected function which allows derived classes to set the value of the last error that occurred on the database to <i>error</i>.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<!-- @@@setLastError -->
<!-- $$$setQuery[overload1]$$$setQueryconstQSqlQuery& -->
<h3 class="fn"><a name="setQuery"></a><span class="type">void</span> QSqlQueryModel::<span class="name">setQuery</span> ( const <span class="type"><a href="qsqlquery.html">QSqlQuery</a></span> &amp; <i>query</i> )</h3>
<p>Resets the model and sets the data provider to be the given <i>query</i>. Note that the query must be active and must not be isForwardOnly().</p>
<p><a href="qsqlquerymodel.html#lastError">lastError</a>() can be used to retrieve verbose information if there was an error setting the query.</p>
<p><b>Note:</b> Calling setQuery() will remove any inserted columns.</p>
<p><b>See also </b><a href="qsqlquerymodel.html#query">query</a>(), <a href="qsqlquery.html#isActive">QSqlQuery::isActive</a>(), <a href="qsqlquery.html#setForwardOnly">QSqlQuery::setForwardOnly</a>(), and <a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<!-- @@@setQuery -->
<!-- $$$setQuery$$$setQueryconstQString&constQSqlDatabase& -->
<h3 class="fn"><a name="setQuery-2"></a><span class="type">void</span> QSqlQueryModel::<span class="name">setQuery</span> ( const <span class="type"><a href="qstring.html">QString</a></span> &amp; <i>query</i>, const <span class="type"><a href="qsqldatabase.html">QSqlDatabase</a></span> &amp; <i>db</i> = QSqlDatabase() )</h3>
<p>This is an overloaded function.</p>
<p>Executes the query <i>query</i> for the given database connection <i>db</i>. If no database (or an invalid database) is specified, the default connection is used.</p>
<p><a href="qsqlquerymodel.html#lastError">lastError</a>() can be used to retrieve verbose information if there was an error setting the query.</p>
<p>Example:</p>
<pre class="cpp"> <span class="type"><a href="qsqlquerymodel.html">QSqlQueryModel</a></span> model;
 model<span class="operator">.</span><a href="qsqlquerymodel.html#setQuery">setQuery</a>(<span class="string">&quot;select * from MyTable&quot;</span>);
 <span class="keyword">if</span> (model<span class="operator">.</span>lastError()<span class="operator">.</span>isValid())
     <a href="qtglobal.html#qDebug">qDebug</a>() <span class="operator">&lt;</span><span class="operator">&lt;</span> model<span class="operator">.</span><a href="qsqlquerymodel.html#lastError">lastError</a>();</pre>
<p><b>See also </b><a href="qsqlquerymodel.html#query">query</a>(), <a href="qsqlquerymodel.html#queryChange">queryChange</a>(), and <a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<!-- @@@setQuery -->
</div>
  <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>