Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qidentityproxymodel.cpp
Go to the documentation of this file.
1// Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
7#include <private/qabstractproxymodel_p.h>
8
10
40{
41
42}
43
49{
50
51}
52
57{
58}
59
64{
65 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
66 Q_D(const QIdentityProxyModel);
67 return d->model->columnCount(mapToSource(parent));
68}
69
74{
75 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
77 return d->model->dropMimeData(data, action, row, column, mapToSource(parent));
78}
79
84{
85 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
86 Q_D(const QIdentityProxyModel);
87 const QModelIndex sourceParent = mapToSource(parent);
88 const QModelIndex sourceIndex = d->model->index(row, column, sourceParent);
89 return mapFromSource(sourceIndex);
90}
91
96{
97 Q_D(const QIdentityProxyModel);
98 return mapFromSource(d->model->sibling(row, column, mapToSource(idx)));
99}
100
105{
106 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
108 return d->model->insertColumns(column, count, mapToSource(parent));
109}
110
115{
116 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
118 return d->model->insertRows(row, count, mapToSource(parent));
119}
120
125{
126 Q_D(const QIdentityProxyModel);
127 if (!d->model || !sourceIndex.isValid())
128 return QModelIndex();
129
130 Q_ASSERT(sourceIndex.model() == d->model);
131 return createIndex(sourceIndex.row(), sourceIndex.column(), sourceIndex.internalPointer());
132}
133
138{
139 Q_D(const QIdentityProxyModel);
140 QItemSelection proxySelection;
141
142 if (!d->model)
143 return proxySelection;
144
145 QItemSelection::const_iterator it = selection.constBegin();
146 const QItemSelection::const_iterator end = selection.constEnd();
147 proxySelection.reserve(selection.size());
148 for ( ; it != end; ++it) {
149 Q_ASSERT(it->model() == d->model);
150 const QItemSelectionRange range(mapFromSource(it->topLeft()), mapFromSource(it->bottomRight()));
151 proxySelection.append(range);
152 }
153
154 return proxySelection;
155}
156
161{
162 Q_D(const QIdentityProxyModel);
163 QItemSelection sourceSelection;
164
165 if (!d->model)
166 return sourceSelection;
167
168 QItemSelection::const_iterator it = selection.constBegin();
169 const QItemSelection::const_iterator end = selection.constEnd();
170 sourceSelection.reserve(selection.size());
171 for ( ; it != end; ++it) {
172 Q_ASSERT(it->model() == this);
173 const QItemSelectionRange range(mapToSource(it->topLeft()), mapToSource(it->bottomRight()));
174 sourceSelection.append(range);
175 }
176
177 return sourceSelection;
178}
179
184{
185 Q_D(const QIdentityProxyModel);
186 if (!d->model || !proxyIndex.isValid())
187 return QModelIndex();
188 Q_ASSERT(proxyIndex.model() == this);
189 return createSourceIndex(proxyIndex.row(), proxyIndex.column(), proxyIndex.internalPointer());
190}
191
195QModelIndexList QIdentityProxyModel::match(const QModelIndex& start, int role, const QVariant& value, int hits, Qt::MatchFlags flags) const
196{
197 Q_D(const QIdentityProxyModel);
198 Q_ASSERT(start.isValid() ? start.model() == this : true);
199 if (!d->model)
200 return QModelIndexList();
201
202 const QModelIndexList sourceList = d->model->match(mapToSource(start), role, value, hits, flags);
203 QModelIndexList::const_iterator it = sourceList.constBegin();
204 const QModelIndexList::const_iterator end = sourceList.constEnd();
205 QModelIndexList proxyList;
206 proxyList.reserve(sourceList.size());
207 for ( ; it != end; ++it)
208 proxyList.append(mapFromSource(*it));
209 return proxyList;
210}
211
216{
217 Q_ASSERT(child.isValid() ? child.model() == this : true);
218 const QModelIndex sourceIndex = mapToSource(child);
219 const QModelIndex sourceParent = sourceIndex.parent();
220 return mapFromSource(sourceParent);
221}
222
227{
228 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
230 return d->model->removeColumns(column, count, mapToSource(parent));
231}
232
237{
238 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
240 return d->model->removeRows(row, count, mapToSource(parent));
241}
242
247bool QIdentityProxyModel::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)
248{
249 Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == this : true);
252 return d->model->moveRows(mapToSource(sourceParent), sourceRow, count, mapToSource(destinationParent), destinationChild);
253}
254
259bool QIdentityProxyModel::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild)
260{
261 Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == this : true);
264 return d->model->moveColumns(mapToSource(sourceParent), sourceColumn, count, mapToSource(destinationParent), destinationChild);
265}
266
271{
272 Q_ASSERT(parent.isValid() ? parent.model() == this : true);
273 Q_D(const QIdentityProxyModel);
274 return d->model->rowCount(mapToSource(parent));
275}
276
280QVariant QIdentityProxyModel::headerData(int section, Qt::Orientation orientation, int role) const
281{
282 Q_D(const QIdentityProxyModel);
283 return d->model->headerData(section, orientation, role);
284}
285
290{
292
293 if (sourceModel()) {
295 this, SLOT(_q_sourceRowsAboutToBeInserted(QModelIndex,int,int)));
297 this, SLOT(_q_sourceRowsInserted(QModelIndex,int,int)));
299 this, SLOT(_q_sourceRowsAboutToBeRemoved(QModelIndex,int,int)));
301 this, SLOT(_q_sourceRowsRemoved(QModelIndex,int,int)));
303 this, SLOT(_q_sourceRowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
305 this, SLOT(_q_sourceRowsMoved(QModelIndex,int,int,QModelIndex,int)));
307 this, SLOT(_q_sourceColumnsAboutToBeInserted(QModelIndex,int,int)));
309 this, SLOT(_q_sourceColumnsInserted(QModelIndex,int,int)));
311 this, SLOT(_q_sourceColumnsAboutToBeRemoved(QModelIndex,int,int)));
313 this, SLOT(_q_sourceColumnsRemoved(QModelIndex,int,int)));
315 this, SLOT(_q_sourceColumnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
317 this, SLOT(_q_sourceColumnsMoved(QModelIndex,int,int,QModelIndex,int)));
319 this, SLOT(_q_sourceModelAboutToBeReset()));
321 this, SLOT(_q_sourceModelReset()));
323 this, SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex,QList<int>)));
325 this, SLOT(_q_sourceHeaderDataChanged(Qt::Orientation,int,int)));
327 this, SLOT(_q_sourceLayoutAboutToBeChanged(QList<QPersistentModelIndex>,QAbstractItemModel::LayoutChangeHint)));
330 }
331
333
334 if (sourceModel()) {
336 SLOT(_q_sourceRowsAboutToBeInserted(QModelIndex,int,int)));
338 SLOT(_q_sourceRowsInserted(QModelIndex,int,int)));
340 SLOT(_q_sourceRowsAboutToBeRemoved(QModelIndex,int,int)));
342 SLOT(_q_sourceRowsRemoved(QModelIndex,int,int)));
344 SLOT(_q_sourceRowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
346 SLOT(_q_sourceRowsMoved(QModelIndex,int,int,QModelIndex,int)));
348 SLOT(_q_sourceColumnsAboutToBeInserted(QModelIndex,int,int)));
350 SLOT(_q_sourceColumnsInserted(QModelIndex,int,int)));
352 SLOT(_q_sourceColumnsAboutToBeRemoved(QModelIndex,int,int)));
354 SLOT(_q_sourceColumnsRemoved(QModelIndex,int,int)));
356 SLOT(_q_sourceColumnsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)));
358 SLOT(_q_sourceColumnsMoved(QModelIndex,int,int,QModelIndex,int)));
360 SLOT(_q_sourceModelAboutToBeReset()));
362 SLOT(_q_sourceModelReset()));
364 SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex,QList<int>)));
366 SLOT(_q_sourceHeaderDataChanged(Qt::Orientation,int,int)));
371 }
372
374}
375
377{
378 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
380 q->beginInsertColumns(q->mapFromSource(parent), start, end);
381}
382
383void QIdentityProxyModelPrivate::_q_sourceColumnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
384{
385 Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == model : true);
386 Q_ASSERT(destParent.isValid() ? destParent.model() == model : true);
388 q->beginMoveColumns(q->mapFromSource(sourceParent), sourceStart, sourceEnd, q->mapFromSource(destParent), dest);
389}
390
392{
393 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
395 q->beginRemoveColumns(q->mapFromSource(parent), start, end);
396}
397
399{
400 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
404 Q_UNUSED(end);
405 q->endInsertColumns();
406}
407
408void QIdentityProxyModelPrivate::_q_sourceColumnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
409{
410 Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == model : true);
411 Q_ASSERT(destParent.isValid() ? destParent.model() == model : true);
413 Q_UNUSED(sourceParent);
414 Q_UNUSED(sourceStart);
415 Q_UNUSED(sourceEnd);
416 Q_UNUSED(destParent);
417 Q_UNUSED(dest);
418 q->endMoveColumns();
419}
420
422{
423 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
427 Q_UNUSED(end);
428 q->endRemoveColumns();
429}
430
431void QIdentityProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles)
432{
433 Q_ASSERT(topLeft.isValid() ? topLeft.model() == model : true);
434 Q_ASSERT(bottomRight.isValid() ? bottomRight.model() == model : true);
436 emit q->dataChanged(q->mapFromSource(topLeft), q->mapFromSource(bottomRight), roles);
437}
438
440{
442 emit q->headerDataChanged(orientation, first, last);
443}
444
446{
448
450 parents.reserve(sourceParents.size());
451 for (const QPersistentModelIndex &parent : sourceParents) {
452 if (!parent.isValid()) {
453 parents << QPersistentModelIndex();
454 continue;
455 }
456 const QModelIndex mappedParent = q->mapFromSource(parent);
457 Q_ASSERT(mappedParent.isValid());
458 parents << mappedParent;
459 }
460
461 emit q->layoutAboutToBeChanged(parents, hint);
462
463 const auto proxyPersistentIndexes = q->persistentIndexList();
464 for (const QModelIndex &proxyPersistentIndex : proxyPersistentIndexes) {
465 proxyIndexes << proxyPersistentIndex;
466 Q_ASSERT(proxyPersistentIndex.isValid());
467 const QPersistentModelIndex srcPersistentIndex = q->mapToSource(proxyPersistentIndex);
468 Q_ASSERT(srcPersistentIndex.isValid());
469 layoutChangePersistentIndexes << srcPersistentIndex;
470 }
471}
472
474{
476
477 for (int i = 0; i < proxyIndexes.size(); ++i) {
478 q->changePersistentIndex(proxyIndexes.at(i), q->mapFromSource(layoutChangePersistentIndexes.at(i)));
479 }
480
483
485 parents.reserve(sourceParents.size());
486 for (const QPersistentModelIndex &parent : sourceParents) {
487 if (!parent.isValid()) {
488 parents << QPersistentModelIndex();
489 continue;
490 }
491 const QModelIndex mappedParent = q->mapFromSource(parent);
492 Q_ASSERT(mappedParent.isValid());
493 parents << mappedParent;
494 }
495
496 emit q->layoutChanged(parents, hint);
497}
498
500{
502 q->beginResetModel();
503}
504
506{
508 q->endResetModel();
509}
510
512{
513 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
515 q->beginInsertRows(q->mapFromSource(parent), start, end);
516}
517
518void QIdentityProxyModelPrivate::_q_sourceRowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
519{
520 Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == model : true);
521 Q_ASSERT(destParent.isValid() ? destParent.model() == model : true);
523 q->beginMoveRows(q->mapFromSource(sourceParent), sourceStart, sourceEnd, q->mapFromSource(destParent), dest);
524}
525
527{
528 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
530 q->beginRemoveRows(q->mapFromSource(parent), start, end);
531}
532
534{
535 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
539 Q_UNUSED(end);
540 q->endInsertRows();
541}
542
543void QIdentityProxyModelPrivate::_q_sourceRowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
544{
545 Q_ASSERT(sourceParent.isValid() ? sourceParent.model() == model : true);
546 Q_ASSERT(destParent.isValid() ? destParent.model() == model : true);
548 Q_UNUSED(sourceParent);
549 Q_UNUSED(sourceStart);
550 Q_UNUSED(sourceEnd);
551 Q_UNUSED(destParent);
552 Q_UNUSED(dest);
553 q->endMoveRows();
554}
555
557{
558 Q_ASSERT(parent.isValid() ? parent.model() == model : true);
562 Q_UNUSED(end);
563 q->endRemoveRows();
564}
565
567
568#include "moc_qidentityproxymodel.cpp"
void rowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow, QPrivateSignal)
void endResetModel()
Completes a model reset operation.
void modelAboutToBeReset(QPrivateSignal)
void columnsRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted after columns have been removed from the model.
LayoutChangeHint
This enum describes the way the model changes layout.
void rowsAboutToBeInserted(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted just before rows are inserted into the model.
void columnsAboutToBeInserted(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted just before columns are inserted into the model.
void modelReset(QPrivateSignal)
Q_INVOKABLE int int const QModelIndex & destinationParent
void layoutAboutToBeChanged(const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList< int > &roles=QList< int >())
This signal is emitted whenever the data in an existing item changes.
void columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn, QPrivateSignal)
void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted just before columns are removed from the model.
Q_INVOKABLE int int const QModelIndex int destinationChild
void layoutChanged(const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
Q_INVOKABLE int sourceRow
void headerDataChanged(Qt::Orientation orientation, int first, int last)
This signal is emitted whenever a header is changed.
void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted just before rows are removed from the model.
void beginResetModel()
Begins a model reset operation.
void rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow, QPrivateSignal)
void rowsInserted(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted after rows have been inserted into the model.
Q_INVOKABLE int sourceColumn
void columnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn, QPrivateSignal)
QModelIndex createIndex(int row, int column, const void *data=nullptr) const
Creates a model index for the given row and column with the internal pointer ptr.
void columnsInserted(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted after columns have been inserted into the model.
void rowsRemoved(const QModelIndex &parent, int first, int last, QPrivateSignal)
This signal is emitted after rows have been removed from the model.
The QAbstractProxyModel class provides a base class for proxy item models that can do sorting,...
QModelIndex createSourceIndex(int row, int col, void *internalPtr) const
Equivalent to calling createIndex on the source model.
QAbstractItemModel * sourceModel
the source model of this proxy model.
virtual void setSourceModel(QAbstractItemModel *sourceModel)
Sets the given sourceModel to be processed by the proxy model.
void _q_sourceRowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
QList< QPersistentModelIndex > layoutChangePersistentIndexes
void _q_sourceColumnsRemoved(const QModelIndex &parent, int start, int end)
void _q_sourceColumnsAboutToBeInserted(const QModelIndex &parent, int start, int end)
void _q_sourceRowsAboutToBeInserted(const QModelIndex &parent, int start, int end)
void _q_sourceColumnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
void _q_sourceColumnsInserted(const QModelIndex &parent, int start, int end)
void _q_sourceRowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
void _q_sourceLayoutAboutToBeChanged(const QList< QPersistentModelIndex > &sourceParents, QAbstractItemModel::LayoutChangeHint hint)
void _q_sourceHeaderDataChanged(Qt::Orientation orientation, int first, int last)
void _q_sourceColumnsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
void _q_sourceRowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
void _q_sourceRowsRemoved(const QModelIndex &parent, int start, int end)
void _q_sourceRowsInserted(const QModelIndex &parent, int start, int end)
void _q_sourceLayoutChanged(const QList< QPersistentModelIndex > &sourceParents, QAbstractItemModel::LayoutChangeHint hint)
void _q_sourceColumnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destParent, int dest)
void _q_sourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList< int > &roles)
The QIdentityProxyModel class proxies its source model unmodified.
int columnCount(const QModelIndex &parent=QModelIndex()) const override
\reimp
bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) override
\reimp
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
\reimp
void setSourceModel(QAbstractItemModel *sourceModel) override
\reimp
bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild) override
\reimp
QItemSelection mapSelectionFromSource(const QItemSelection &selection) const override
\reimp
QItemSelection mapSelectionToSource(const QItemSelection &selection) const override
\reimp
bool insertColumns(int column, int count, const QModelIndex &parent=QModelIndex()) override
\reimp
bool removeColumns(int column, int count, const QModelIndex &parent=QModelIndex()) override
\reimp
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:311
QModelIndex sibling(int row, int column, const QModelIndex &idx) const override
\reimp
int rowCount(const QModelIndex &parent=QModelIndex()) const override
\reimp
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
\reimp
bool insertRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
\reimp
QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override
\reimp
QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits=1, Qt::MatchFlags flags=Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const override
\reimp
QIdentityProxyModel(QObject *parent=nullptr)
Constructs an identity model with the given parent.
QModelIndex mapToSource(const QModelIndex &proxyIndex) const override
\reimp
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
\reimp
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
\reimp
~QIdentityProxyModel()
Destroys this identity model.
\inmodule QtCore
qsizetype size() const noexcept
Definition qlist.h:386
const_reference at(qsizetype i) const noexcept
Definition qlist.h:429
const_iterator constBegin() const noexcept
Definition qlist.h:615
void reserve(qsizetype size)
Definition qlist.h:746
void append(parameter_type t)
Definition qlist.h:441
const_iterator constEnd() const noexcept
Definition qlist.h:616
void clear()
Definition qlist.h:417
\inmodule QtCore
Definition qmimedata.h:16
\inmodule QtCore
constexpr int row() const noexcept
Returns the row this model index refers to.
QModelIndex parent() const
Returns the parent of the model index, or QModelIndex() if it has no parent.
constexpr const QAbstractItemModel * model() const noexcept
Returns a pointer to the model containing the item that this index refers to.
constexpr int column() const noexcept
Returns the column this model index refers to.
void * internalPointer() const noexcept
Returns a {void} {*} pointer used by the model to associate the index with the internal data structur...
constexpr bool isValid() const noexcept
Returns {true} if this model index is valid; otherwise returns {false}.
QObject * parent
Definition qobject.h:61
\inmodule QtCore
Definition qobject.h:90
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2823
bool isValid() const
Returns {true} if this persistent model index is valid; otherwise returns {false}.
\inmodule QtCore
Definition qvariant.h:64
QSet< QString >::iterator it
Combined button and popup list for selecting options.
Orientation
Definition qnamespace.h:97
DropAction
QList< QModelIndex > QModelIndexList
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define SLOT(a)
Definition qobjectdefs.h:51
#define SIGNAL(a)
Definition qobjectdefs.h:52
GLuint GLuint end
GLenum GLenum GLsizei count
GLsizei range
GLbitfield flags
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint start
GLint first
GLenum GLenum GLsizei void GLsizei void * column
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
GLenum GLenum GLsizei void * row
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
#define emit
#define Q_UNUSED(x)
QSqlQueryModel * model
[16]
myObject disconnect()
[26]
QItemSelection * selection
[0]
QLayoutItem * child
[0]
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent