Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qstandarditemmodel.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QSTANDARDITEMMODEL_H
5#define QSTANDARDITEMMODEL_H
6
7#include <QtGui/qtguiglobal.h>
8#include <QtCore/qabstractitemmodel.h>
9#include <QtGui/qbrush.h>
10#include <QtGui/qfont.h>
11#include <QtGui/qicon.h>
12#ifndef QT_NO_DATASTREAM
13#include <QtCore/qdatastream.h>
14#endif
15
16QT_REQUIRE_CONFIG(standarditemmodel);
17
19
21
23class Q_GUI_EXPORT QStandardItem
24{
25public:
27 explicit QStandardItem(const QString &text);
28 QStandardItem(const QIcon &icon, const QString &text);
29 explicit QStandardItem(int rows, int columns = 1);
30 virtual ~QStandardItem();
31
32 virtual QVariant data(int role = Qt::UserRole + 1) const;
33 virtual void multiData(QModelRoleDataSpan roleDataSpan) const;
34 virtual void setData(const QVariant &value, int role = Qt::UserRole + 1);
35 void clearData();
36
37 inline QString text() const {
38 return qvariant_cast<QString>(data(Qt::DisplayRole));
39 }
40 inline void setText(const QString &text);
41
42 inline QIcon icon() const {
43 return qvariant_cast<QIcon>(data(Qt::DecorationRole));
44 }
45 inline void setIcon(const QIcon &icon);
46
47 inline QString toolTip() const {
48 return qvariant_cast<QString>(data(Qt::ToolTipRole));
49 }
50 inline void setToolTip(const QString &toolTip);
51
52#ifndef QT_NO_STATUSTIP
53 inline QString statusTip() const {
54 return qvariant_cast<QString>(data(Qt::StatusTipRole));
55 }
56 inline void setStatusTip(const QString &statusTip);
57#endif
58
59#if QT_CONFIG(whatsthis)
60 inline QString whatsThis() const {
61 return qvariant_cast<QString>(data(Qt::WhatsThisRole));
62 }
63 inline void setWhatsThis(const QString &whatsThis);
64#endif
65
66 inline QSize sizeHint() const {
67 return qvariant_cast<QSize>(data(Qt::SizeHintRole));
68 }
69 inline void setSizeHint(const QSize &sizeHint);
70
71 inline QFont font() const {
72 return qvariant_cast<QFont>(data(Qt::FontRole));
73 }
74 inline void setFont(const QFont &font);
75
76 inline Qt::Alignment textAlignment() const {
77 return qvariant_cast<Qt::Alignment>(data(Qt::TextAlignmentRole));
78 }
79 inline void setTextAlignment(Qt::Alignment textAlignment);
80
81 inline QBrush background() const {
82 return qvariant_cast<QBrush>(data(Qt::BackgroundRole));
83 }
84 inline void setBackground(const QBrush &brush);
85
86 inline QBrush foreground() const {
87 return qvariant_cast<QBrush>(data(Qt::ForegroundRole));
88 }
89 inline void setForeground(const QBrush &brush);
90
91 inline Qt::CheckState checkState() const {
92 return Qt::CheckState(qvariant_cast<int>(data(Qt::CheckStateRole)));
93 }
94 inline void setCheckState(Qt::CheckState checkState);
95
96 inline QString accessibleText() const {
97 return qvariant_cast<QString>(data(Qt::AccessibleTextRole));
98 }
99 inline void setAccessibleText(const QString &accessibleText);
100
102 return qvariant_cast<QString>(data(Qt::AccessibleDescriptionRole));
103 }
104 inline void setAccessibleDescription(const QString &accessibleDescription);
105
106 Qt::ItemFlags flags() const;
107 void setFlags(Qt::ItemFlags flags);
108
109 inline bool isEnabled() const {
110 return bool(flags() & Qt::ItemIsEnabled);
111 }
112 void setEnabled(bool enabled);
113
114 inline bool isEditable() const {
115 return bool(flags() & Qt::ItemIsEditable);
116 }
117 void setEditable(bool editable);
118
119 inline bool isSelectable() const {
120 return bool(flags() & Qt::ItemIsSelectable);
121 }
122 void setSelectable(bool selectable);
123
124 inline bool isCheckable() const {
125 return bool(flags() & Qt::ItemIsUserCheckable);
126 }
127 void setCheckable(bool checkable);
128
129 inline bool isAutoTristate() const {
130 return bool(flags() & Qt::ItemIsAutoTristate);
131 }
132 void setAutoTristate(bool tristate);
133
134 inline bool isUserTristate() const {
135 return bool(flags() & Qt::ItemIsUserTristate);
136 }
137 void setUserTristate(bool tristate);
138
139#if QT_CONFIG(draganddrop)
140 inline bool isDragEnabled() const {
141 return bool(flags() & Qt::ItemIsDragEnabled);
142 }
143 void setDragEnabled(bool dragEnabled);
144
145 inline bool isDropEnabled() const {
146 return bool(flags() & Qt::ItemIsDropEnabled);
147 }
148 void setDropEnabled(bool dropEnabled);
149#endif // QT_CONFIG(draganddrop)
150
151 QStandardItem *parent() const;
152 int row() const;
153 int column() const;
154 QModelIndex index() const;
155 QStandardItemModel *model() const;
156
157 int rowCount() const;
158 void setRowCount(int rows);
159 int columnCount() const;
160 void setColumnCount(int columns);
161
162 bool hasChildren() const;
163 QStandardItem *child(int row, int column = 0) const;
164 void setChild(int row, int column, QStandardItem *item);
165 inline void setChild(int row, QStandardItem *item);
166
167 void insertRow(int row, const QList<QStandardItem*> &items);
168 void insertColumn(int column, const QList<QStandardItem*> &items);
169 void insertRows(int row, const QList<QStandardItem*> &items);
170 void insertRows(int row, int count);
171 void insertColumns(int column, int count);
172
173 void removeRow(int row);
174 void removeColumn(int column);
175 void removeRows(int row, int count);
176 void removeColumns(int column, int count);
177
178 inline void appendRow(const QList<QStandardItem*> &items);
179 inline void appendRows(const QList<QStandardItem*> &items);
180 inline void appendColumn(const QList<QStandardItem*> &items);
181 inline void insertRow(int row, QStandardItem *item);
182 inline void appendRow(QStandardItem *item);
183
184 QStandardItem *takeChild(int row, int column = 0);
185 QList<QStandardItem*> takeRow(int row);
186 QList<QStandardItem*> takeColumn(int column);
187
188 void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder);
189
190 virtual QStandardItem *clone() const;
191
192 enum ItemType { Type = 0, UserType = 1000 };
193 virtual int type() const;
194
195#ifndef QT_NO_DATASTREAM
196 virtual void read(QDataStream &in);
197 virtual void write(QDataStream &out) const;
198#endif
199 virtual bool operator<(const QStandardItem &other) const;
200
201protected:
204 QStandardItem &operator=(const QStandardItem &other);
205 QScopedPointer<QStandardItemPrivate> d_ptr;
206
207 void emitDataChanged();
208
209private:
210 Q_DECLARE_PRIVATE(QStandardItem)
212 friend class QStandardItemModel;
213};
214
215inline void QStandardItem::setText(const QString &atext)
216{ setData(atext, Qt::DisplayRole); }
217
218inline void QStandardItem::setIcon(const QIcon &aicon)
219{ setData(aicon, Qt::DecorationRole); }
220
221inline void QStandardItem::setToolTip(const QString &atoolTip)
222{ setData(atoolTip, Qt::ToolTipRole); }
223
224#ifndef QT_NO_STATUSTIP
225inline void QStandardItem::setStatusTip(const QString &astatusTip)
226{ setData(astatusTip, Qt::StatusTipRole); }
227#endif
228
229#if QT_CONFIG(whatsthis)
230inline void QStandardItem::setWhatsThis(const QString &awhatsThis)
231{ setData(awhatsThis, Qt::WhatsThisRole); }
232#endif
233
234inline void QStandardItem::setSizeHint(const QSize &asizeHint)
235{ setData(asizeHint, Qt::SizeHintRole); }
236
237inline void QStandardItem::setFont(const QFont &afont)
238{ setData(afont, Qt::FontRole); }
239
240inline void QStandardItem::setTextAlignment(Qt::Alignment atextAlignment)
242
243inline void QStandardItem::setBackground(const QBrush &abrush)
244{ setData(abrush, Qt::BackgroundRole); }
245
246inline void QStandardItem::setForeground(const QBrush &abrush)
247{ setData(abrush, Qt::ForegroundRole); }
248
250{ setData(acheckState, Qt::CheckStateRole); }
251
252inline void QStandardItem::setAccessibleText(const QString &aaccessibleText)
253{ setData(aaccessibleText, Qt::AccessibleTextRole); }
254
255inline void QStandardItem::setAccessibleDescription(const QString &aaccessibleDescription)
256{ setData(aaccessibleDescription, Qt::AccessibleDescriptionRole); }
257
258inline void QStandardItem::setChild(int arow, QStandardItem *aitem)
259{ setChild(arow, 0, aitem); }
260
261inline void QStandardItem::appendRow(const QList<QStandardItem*> &aitems)
262{ insertRow(rowCount(), aitems); }
263
264inline void QStandardItem::appendRows(const QList<QStandardItem*> &aitems)
265{ insertRows(rowCount(), aitems); }
266
267inline void QStandardItem::appendColumn(const QList<QStandardItem*> &aitems)
268{ insertColumn(columnCount(), aitems); }
269
270inline void QStandardItem::insertRow(int arow, QStandardItem *aitem)
271{ insertRow(arow, QList<QStandardItem*>() << aitem); }
272
274{ insertRow(rowCount(), aitem); }
275
277
278class Q_GUI_EXPORT QStandardItemModel : public QAbstractItemModel
279{
281 Q_PROPERTY(int sortRole READ sortRole WRITE setSortRole BINDABLE bindableSortRole)
282
283public:
284 explicit QStandardItemModel(QObject *parent = nullptr);
285 QStandardItemModel(int rows, int columns, QObject *parent = nullptr);
287
288 void setItemRoleNames(const QHash<int,QByteArray> &roleNames);
289 QHash<int, QByteArray> roleNames() const override;
290
291 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
292 QModelIndex parent(const QModelIndex &child) const override;
293
294 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
295 int columnCount(const QModelIndex &parent = QModelIndex()) const override;
296 bool hasChildren(const QModelIndex &parent = QModelIndex()) const override;
297
298 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
299 void multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const override;
300 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
301 bool clearItemData(const QModelIndex &index) override;
302
303 QVariant headerData(int section, Qt::Orientation orientation,
304 int role = Qt::DisplayRole) const override;
305 bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value,
306 int role = Qt::EditRole) override;
307
308 bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
309 bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override;
310 bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
311 bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override;
312
313 Qt::ItemFlags flags(const QModelIndex &index) const override;
314 Qt::DropActions supportedDropActions() const override;
315
316 QMap<int, QVariant> itemData(const QModelIndex &index) const override;
317 bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) override;
318
319 void clear();
320
321 using QObject::parent;
322
323 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
324
325 QStandardItem *itemFromIndex(const QModelIndex &index) const;
326 QModelIndex indexFromItem(const QStandardItem *item) const;
327
328 QStandardItem *item(int row, int column = 0) const;
329 void setItem(int row, int column, QStandardItem *item);
330 inline void setItem(int row, QStandardItem *item);
331 QStandardItem *invisibleRootItem() const;
332
333 QStandardItem *horizontalHeaderItem(int column) const;
334 void setHorizontalHeaderItem(int column, QStandardItem *item);
335 QStandardItem *verticalHeaderItem(int row) const;
336 void setVerticalHeaderItem(int row, QStandardItem *item);
337
338 void setHorizontalHeaderLabels(const QStringList &labels);
339 void setVerticalHeaderLabels(const QStringList &labels);
340
341 void setRowCount(int rows);
342 void setColumnCount(int columns);
343
344 void appendRow(const QList<QStandardItem*> &items);
345 void appendColumn(const QList<QStandardItem*> &items);
346 inline void appendRow(QStandardItem *item);
347
348 void insertRow(int row, const QList<QStandardItem*> &items);
349 void insertColumn(int column, const QList<QStandardItem*> &items);
350 inline void insertRow(int row, QStandardItem *item);
351
352 inline bool insertRow(int row, const QModelIndex &parent = QModelIndex());
353 inline bool insertColumn(int column, const QModelIndex &parent = QModelIndex());
354
355 QStandardItem *takeItem(int row, int column = 0);
356 QList<QStandardItem*> takeRow(int row);
357 QList<QStandardItem*> takeColumn(int column);
358
359 QStandardItem *takeHorizontalHeaderItem(int column);
360 QStandardItem *takeVerticalHeaderItem(int row);
361
362 const QStandardItem *itemPrototype() const;
363 void setItemPrototype(const QStandardItem *item);
364
365 QList<QStandardItem*> findItems(const QString &text,
366 Qt::MatchFlags flags = Qt::MatchExactly,
367 int column = 0) const;
368
369 int sortRole() const;
370 void setSortRole(int role);
371 QBindable<int> bindableSortRole();
372
373 QStringList mimeTypes() const override;
374 QMimeData *mimeData(const QModelIndexList &indexes) const override;
375 bool dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
376
379
380protected:
382
383private:
385 friend class QStandardItem;
386 Q_DISABLE_COPY(QStandardItemModel)
387 Q_DECLARE_PRIVATE(QStandardItemModel)
388
389 Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &topLeft,
390 const QModelIndex &bottomRight))
391};
392
393inline void QStandardItemModel::setItem(int arow, QStandardItem *aitem)
394{ setItem(arow, 0, aitem); }
395
397{ appendRow(QList<QStandardItem*>() << aitem); }
398
399inline void QStandardItemModel::insertRow(int arow, QStandardItem *aitem)
400{ insertRow(arow, QList<QStandardItem*>() << aitem); }
401
402inline bool QStandardItemModel::insertRow(int arow, const QModelIndex &aparent)
403{ return QAbstractItemModel::insertRow(arow, aparent); }
404inline bool QStandardItemModel::insertColumn(int acolumn, const QModelIndex &aparent)
405{ return QAbstractItemModel::insertColumn(acolumn, aparent); }
406
407#ifndef QT_NO_DATASTREAM
410#endif
411
413
414#endif //QSTANDARDITEMMODEL_H
\inmodule QtGui
Definition qbrush.h:30
\inmodule QtCore\reentrant
Definition qdatastream.h:46
\reentrant
Definition qfont.h:22
The QIcon class provides scalable icons in different modes and states.
Definition qicon.h:20
\inmodule QtCore
Definition qmimedata.h:16
\inmodule QtCore
\inmodule QtCore
Definition qobject.h:103
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
\inmodule QtCore
Definition qsize.h:25
The QStandardItemModel class provides a generic model for storing custom data.
void insertRow(int row, const QList< QStandardItem * > &items)
void itemChanged(QStandardItem *item)
void insertColumn(int column, const QList< QStandardItem * > &items)
void appendRow(const QList< QStandardItem * > &items)
void setItem(int row, int column, QStandardItem *item)
The QStandardItem class provides an item for use with the QStandardItemModel class.
void appendRows(const QList< QStandardItem * > &items)
Appends rows containing items.
void setAccessibleDescription(const QString &accessibleDescription)
Sets the item's accessible description to the string specified by accessibleDescription.
QString statusTip() const
Returns the item's status tip.
QString accessibleDescription() const
Returns the item's accessible description.
bool isCheckable() const
Returns whether the item is user-checkable.
void setBackground(const QBrush &brush)
Sets the item's background brush to the specified brush.
void setToolTip(const QString &toolTip)
Sets the item's tooltip to the string specified by toolTip.
ItemType
This enum describes the types that are used to describe standard items.
void setSizeHint(const QSize &sizeHint)
Sets the size hint for the item to be size.
void setIcon(const QIcon &icon)
Sets the item's icon to the icon specified.
bool isEditable() const
Returns whether the item can be edited by the user.
void setStatusTip(const QString &statusTip)
Sets the item's status tip to the string specified by statusTip.
bool isEnabled() const
Returns whether the item is enabled.
QIcon icon() const
Returns the item's icon.
void setFont(const QFont &font)
Sets the font used to display the item's text to the given font.
QBrush background() const
Returns the brush used to render the item's background.
bool isUserTristate() const
QSize sizeHint() const
Returns the size hint set for the item, or an invalid QSize if no size hint has been set.
void setForeground(const QBrush &brush)
Sets the brush used to display the item's foreground (e.g.
void setChild(int row, int column, QStandardItem *item)
Sets the child item at (row, column) to item.
bool isAutoTristate() const
Returns whether the item is tristate and is controlled by QTreeWidget.
void setCheckState(Qt::CheckState checkState)
Sets the check state of the item to be state.
bool isSelectable() const
Returns whether the item is selectable by the user.
QString text() const
Returns the item's text.
void setAccessibleText(const QString &accessibleText)
Sets the item's accessible text to the string specified by accessibleText.
QScopedPointer< QStandardItemPrivate > d_ptr
QFont font() const
Returns the font used to render the item's text.
Qt::CheckState checkState() const
Returns the checked state of the item.
QString accessibleText() const
Returns the item's accessible text.
Qt::Alignment textAlignment() const
Returns the text alignment for the item's text.
void appendColumn(const QList< QStandardItem * > &items)
Appends a column containing items.
QString toolTip() const
Returns the item's tooltip.
QBrush foreground() const
Returns the brush used to render the item's foreground (e.g.
void setTextAlignment(Qt::Alignment textAlignment)
Sets the text alignment for the item's text to the alignment specified.
void appendRow(const QList< QStandardItem * > &items)
Appends a row containing items.
void insertRow(int row, const QList< QStandardItem * > &items)
Inserts a row at row containing items.
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qvariant.h:65
static auto fromValue(T &&value) noexcept(std::is_nothrow_copy_constructible_v< T > &&Private::CanUseInternalSpace< T >) -> std::enable_if_t< std::conjunction_v< std::is_copy_constructible< T >, std::is_destructible< T > >, QVariant >
Definition qvariant.h:536
b clear()
QString text
Combined button and popup list for selecting options.
CheckState
Orientation
Definition qnamespace.h:98
@ AccessibleDescriptionRole
@ AccessibleTextRole
@ WhatsThisRole
@ FontRole
@ TextAlignmentRole
@ ForegroundRole
@ UserRole
@ DecorationRole
@ BackgroundRole
@ EditRole
@ CheckStateRole
@ StatusTipRole
@ ToolTipRole
@ DisplayRole
@ SizeHintRole
SortOrder
Definition qnamespace.h:121
@ AscendingOrder
Definition qnamespace.h:122
DropAction
@ ItemIsEditable
@ ItemIsDragEnabled
@ ItemIsUserTristate
@ ItemIsUserCheckable
@ ItemIsSelectable
@ ItemIsEnabled
@ ItemIsDropEnabled
@ ItemIsAutoTristate
@ MatchExactly
Definition brush.cpp:5
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLuint index
[2]
GLenum GLenum GLsizei count
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLenum type
GLbitfield flags
GLenum GLenum GLsizei void GLsizei void * column
GLuint in
GLenum GLenum GLsizei void * row
GLfixed GLfixed GLint GLint order
decorationRoleName toolTipRoleName whatsThisRoleName textAlignmentRoleName foregroundRoleName accessibleTextRoleName setSizeHint
decorationRoleName toolTipRoleName whatsThisRoleName setTextAlignment
decorationRoleName toolTipRoleName setWhatsThis
decorationRoleName toolTipRoleName whatsThisRoleName textAlignmentRoleName setForeground
decorationRoleName toolTipRoleName whatsThisRoleName textAlignmentRoleName foregroundRoleName setAccessibleText
decorationRoleName setToolTip
static bool operator<(const QSettingsIniKey &k1, const QSettingsIniKey &k2)
#define QT_REQUIRE_CONFIG(feature)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_PRIVATE_SLOT(d, signature)
#define Q_SIGNALS
ReturnedValue read(const char *data)
model setHeaderData(0, Qt::Horizontal, tr("Name"))
QSqlQueryModel * model
[16]
gzip write("uncompressed data")
QTextStream out(stdout)
[7]
model multiData(index, span)
QDataStream & operator<<(QDataStream &out, const MyClass &myObj)
[4]
QDataStream & operator>>(QDataStream &in, MyClass &myObj)
mimeData setData("text/csv", csvData)
QMimeData * mimeData
QSharedPointer< T > other(t)
[5]
QGraphicsItem * item
QList< QTreeWidgetItem * > items
treeWidget setColumnCount(1)
myAction setIcon(SomeIcon)
flay removeRow(2)
flay insertRow(2, "User:", le)
QLayoutItem * child
[0]
insertRed setText("insert red text")
Definition moc.h:23