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
qtreewidget.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 QTREEWIDGET_H
5#define QTREEWIDGET_H
6
7#include <QtWidgets/qtreeview.h>
8#include <QtWidgets/qtreewidgetitemiterator.h>
9#include <QtWidgets/qtwidgetsglobal.h>
10#include <QtCore/qlist.h>
11#include <QtCore/qvariant.h>
12
14
16
17class QTreeWidget;
18class QTreeModel;
19class QWidgetItemData;
21
22class Q_WIDGETS_EXPORT QTreeWidgetItem
23{
24 friend class QTreeModel;
25 friend class QTreeWidget;
26 friend class QTreeWidgetPrivate;
29public:
30 enum ItemType { Type = 0, UserType = 1000 };
31 explicit QTreeWidgetItem(int type = Type);
32 explicit QTreeWidgetItem(const QStringList &strings, int type = Type);
33 explicit QTreeWidgetItem(QTreeWidget *treeview, int type = Type);
34 QTreeWidgetItem(QTreeWidget *treeview, const QStringList &strings, int type = Type);
35 QTreeWidgetItem(QTreeWidget *treeview, QTreeWidgetItem *after, int type = Type);
36 explicit QTreeWidgetItem(QTreeWidgetItem *parent, int type = Type);
40 virtual ~QTreeWidgetItem();
41
42 virtual QTreeWidgetItem *clone() const;
43
44 inline QTreeWidget *treeWidget() const { return view; }
45
46 void setSelected(bool select);
47 bool isSelected() const;
48
49 void setHidden(bool hide);
50 bool isHidden() const;
51
52 void setExpanded(bool expand);
53 bool isExpanded() const;
54
55 void setFirstColumnSpanned(bool span);
56 bool isFirstColumnSpanned() const;
57
58 inline void setDisabled(bool disabled);
59 inline bool isDisabled() const;
60
61 enum ChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless };
62 void setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy);
63 QTreeWidgetItem::ChildIndicatorPolicy childIndicatorPolicy() const;
64
65 Qt::ItemFlags flags() const;
66 void setFlags(Qt::ItemFlags flags);
67
68 inline QString text(int column) const
69 { return data(column, Qt::DisplayRole).toString(); }
70 inline void setText(int column, const QString &text);
71
72 inline QIcon icon(int column) const
73 { return qvariant_cast<QIcon>(data(column, Qt::DecorationRole)); }
74 inline void setIcon(int column, const QIcon &icon);
75
76 inline QString statusTip(int column) const
77 { return data(column, Qt::StatusTipRole).toString(); }
78 inline void setStatusTip(int column, const QString &statusTip);
79
80#if QT_CONFIG(tooltip)
81 inline QString toolTip(int column) const
82 { return data(column, Qt::ToolTipRole).toString(); }
83 inline void setToolTip(int column, const QString &toolTip);
84#endif
85
86#if QT_CONFIG(whatsthis)
87 inline QString whatsThis(int column) const
88 { return data(column, Qt::WhatsThisRole).toString(); }
89 inline void setWhatsThis(int column, const QString &whatsThis);
90#endif
91
92 inline QFont font(int column) const
93 { return qvariant_cast<QFont>(data(column, Qt::FontRole)); }
94 inline void setFont(int column, const QFont &font);
95
96#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
97 inline int textAlignment(int column) const
98 { return data(column, Qt::TextAlignmentRole).toInt(); }
99#else
100 inline Qt::Alignment textAlignment(int column) const
101 { return qvariant_cast<Qt::Alignment>(data(column, Qt::TextAlignmentRole)); }
102#endif
103#if QT_DEPRECATED_SINCE(6, 4)
104 QT_DEPRECATED_VERSION_X_6_4("Use the overload taking Qt::Alignment")
105 inline void setTextAlignment(int column, int alignment)
109#endif
112
113 inline QBrush background(int column) const
114 { return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole)); }
115 inline void setBackground(int column, const QBrush &brush)
117
118 inline QBrush foreground(int column) const
119 { return qvariant_cast<QBrush>(data(column, Qt::ForegroundRole)); }
120 inline void setForeground(int column, const QBrush &brush)
122
124 { return qvariant_cast<Qt::CheckState>(data(column, Qt::CheckStateRole)); }
127
128 inline QSize sizeHint(int column) const
129 { return qvariant_cast<QSize>(data(column, Qt::SizeHintRole)); }
130 inline void setSizeHint(int column, const QSize &size)
131 { setData(column, Qt::SizeHintRole, size.isValid() ? QVariant(size) : QVariant()); }
132
133 virtual QVariant data(int column, int role) const;
134 virtual void setData(int column, int role, const QVariant &value);
135
136 virtual bool operator<(const QTreeWidgetItem &other) const;
137
138#ifndef QT_NO_DATASTREAM
139 virtual void read(QDataStream &in);
140 virtual void write(QDataStream &out) const;
141#endif
142 QTreeWidgetItem &operator=(const QTreeWidgetItem &other);
143
144 inline QTreeWidgetItem *parent() const { return par; }
145 inline QTreeWidgetItem *child(int index) const {
146 if (index < 0 || index >= children.size())
147 return nullptr;
148 executePendingSort();
149 return children.at(index);
150 }
151 inline int childCount() const { return int(children.size()); }
152 inline int columnCount() const { return int(values.size()); }
153 inline int indexOfChild(QTreeWidgetItem *child) const;
154
155 void addChild(QTreeWidgetItem *child);
156 void insertChild(int index, QTreeWidgetItem *child);
157 void removeChild(QTreeWidgetItem *child);
158 QTreeWidgetItem *takeChild(int index);
159
160 void addChildren(const QList<QTreeWidgetItem*> &children);
161 void insertChildren(int index, const QList<QTreeWidgetItem*> &children);
162 QList<QTreeWidgetItem*> takeChildren();
163
164 inline int type() const { return rtti; }
166 { sortChildren(column, order, false); }
167
168protected:
169 void emitDataChanged();
170
171private:
172 void sortChildren(int column, Qt::SortOrder order, bool climb);
173 QVariant childrenCheckState(int column) const;
174 void itemChanged();
175 void executePendingSort() const;
176 QTreeModel *treeModel(QTreeWidget *v = nullptr) const;
177
178 int rtti;
179 // One item has a vector of column entries. Each column has a vector of (role, value) pairs.
180 QList<QList<QWidgetItemData>> values;
181 QTreeWidget *view = nullptr;
183 QTreeWidgetItem *par = nullptr;
184 // ### Qt7: Move children to d-pointer and replace QList by a suitable data structure.
185 // to fix QTBUG-94546
186 QList<QTreeWidgetItem*> children;
189};
190
191inline void QTreeWidgetItem::setText(int column, const QString &atext)
192{ setData(column, Qt::DisplayRole, atext); }
193
194inline void QTreeWidgetItem::setIcon(int column, const QIcon &aicon)
196
197#if QT_CONFIG(statustip)
198inline void QTreeWidgetItem::setStatusTip(int column, const QString &astatusTip)
199{ setData(column, Qt::StatusTipRole, astatusTip); }
200#endif
201
202#if QT_CONFIG(tooltip)
203inline void QTreeWidgetItem::setToolTip(int column, const QString &atoolTip)
204{ setData(column, Qt::ToolTipRole, atoolTip); }
205#endif
206
207#if QT_CONFIG(whatsthis)
208inline void QTreeWidgetItem::setWhatsThis(int column, const QString &awhatsThis)
209{ setData(column, Qt::WhatsThisRole, awhatsThis); }
210#endif
211
212inline void QTreeWidgetItem::setFont(int column, const QFont &afont)
213{ setData(column, Qt::FontRole, afont); }
214
216{ executePendingSort(); return int(children.indexOf(achild)); }
217
218#ifndef QT_NO_DATASTREAM
221#endif
222
224
225class Q_WIDGETS_EXPORT QTreeWidget : public QTreeView
226{
228 Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount)
229 Q_PROPERTY(int topLevelItemCount READ topLevelItemCount)
230
231 friend class QTreeModel;
232 friend class QTreeWidgetItem;
233public:
234 explicit QTreeWidget(QWidget *parent = nullptr);
235 ~QTreeWidget();
236
237 int columnCount() const;
238 void setColumnCount(int columns);
239
240 QTreeWidgetItem *invisibleRootItem() const;
241 QTreeWidgetItem *topLevelItem(int index) const;
242 int topLevelItemCount() const;
243 void insertTopLevelItem(int index, QTreeWidgetItem *item);
244 void addTopLevelItem(QTreeWidgetItem *item);
245 QTreeWidgetItem *takeTopLevelItem(int index);
246 int indexOfTopLevelItem(QTreeWidgetItem *item) const;
247
249 void addTopLevelItems(const QList<QTreeWidgetItem*> &items);
250
251 QTreeWidgetItem *headerItem() const;
252 void setHeaderItem(QTreeWidgetItem *item);
253 void setHeaderLabels(const QStringList &labels);
254 inline void setHeaderLabel(const QString &label);
255
256 QTreeWidgetItem *currentItem() const;
257 int currentColumn() const;
258 void setCurrentItem(QTreeWidgetItem *item);
259 void setCurrentItem(QTreeWidgetItem *item, int column);
260 void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command);
261
262 QTreeWidgetItem *itemAt(const QPoint &p) const;
263 inline QTreeWidgetItem *itemAt(int x, int y) const;
264 QRect visualItemRect(const QTreeWidgetItem *item) const;
265
266 int sortColumn() const;
267 void sortItems(int column, Qt::SortOrder order);
268
269 void editItem(QTreeWidgetItem *item, int column = 0);
270 void openPersistentEditor(QTreeWidgetItem *item, int column = 0);
271 void closePersistentEditor(QTreeWidgetItem *item, int column = 0);
272 using QAbstractItemView::isPersistentEditorOpen;
273 bool isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const;
274
275 QWidget *itemWidget(QTreeWidgetItem *item, int column) const;
276 void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget);
277 inline void removeItemWidget(QTreeWidgetItem *item, int column);
278
279 QList<QTreeWidgetItem*> selectedItems() const;
280 QList<QTreeWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags,
281 int column = 0) const;
282
283 QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const;
284 QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const;
285
286 QModelIndex indexFromItem(const QTreeWidgetItem *item, int column = 0) const;
287 QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const;
288
289 void setSelectionModel(QItemSelectionModel *selectionModel) override;
290
291public Q_SLOTS:
292 void scrollToItem(const QTreeWidgetItem *item,
293 QAbstractItemView::ScrollHint hint = EnsureVisible);
294 void expandItem(const QTreeWidgetItem *item);
295 void collapseItem(const QTreeWidgetItem *item);
296 void clear();
297
299 void itemPressed(QTreeWidgetItem *item, int column);
300 void itemClicked(QTreeWidgetItem *item, int column);
301 void itemDoubleClicked(QTreeWidgetItem *item, int column);
302 void itemActivated(QTreeWidgetItem *item, int column);
303 void itemEntered(QTreeWidgetItem *item, int column);
304 void itemChanged(QTreeWidgetItem *item, int column);
305 void itemExpanded(QTreeWidgetItem *item);
306 void itemCollapsed(QTreeWidgetItem *item);
307 void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
308 void itemSelectionChanged();
309
310protected:
311 bool event(QEvent *e) override;
312 virtual QStringList mimeTypes() const;
313 virtual QMimeData *mimeData(const QList<QTreeWidgetItem *> &items) const;
314 virtual bool dropMimeData(QTreeWidgetItem *parent, int index,
315 const QMimeData *data, Qt::DropAction action);
316 virtual Qt::DropActions supportedDropActions() const;
317
318#if QT_CONFIG(draganddrop)
319 void dropEvent(QDropEvent *event) override;
320#endif
321private:
322 void setModel(QAbstractItemModel *model) override;
323
324 Q_DECLARE_PRIVATE(QTreeWidget)
325 Q_DISABLE_COPY(QTreeWidget)
326};
327
330
331inline QTreeWidgetItem *QTreeWidget::itemAt(int ax, int ay) const
332{ return itemAt(QPoint(ax, ay)); }
333
334inline void QTreeWidget::setHeaderLabel(const QString &alabel)
335{ setHeaderLabels(QStringList(alabel)); }
336
339
341{ return !(flags() & Qt::ItemIsEnabled); }
342
344
345#endif // QTREEWIDGET_H
The QAbstractItemView class provides the basic functionality for item view classes.
ScrollHint
\value EnsureVisible Scroll to ensure that the item is visible.
\inmodule QtGui
Definition qbrush.h:30
\inmodule QtCore\reentrant
Definition qdatastream.h:46
\inmodule QtCore
Definition qcoreevent.h:45
\reentrant
Definition qfont.h:22
The QIcon class provides scalable icons in different modes and states.
Definition qicon.h:20
Definition qlist.h:75
\inmodule QtCore
Definition qmimedata.h:16
\inmodule QtCore
\inmodule QtCore\reentrant
Definition qpoint.h:25
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
Definition qsize.h:25
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
The QTreeView class provides a default model/view implementation of a tree view.
Definition qtreeview.h:20
The QTreeWidgetItem class provides an item for use with the QTreeWidget convenience class.
Definition qtreewidget.h:23
QBrush background(int column) const
void setStatusTip(int column, const QString &statusTip)
Sets the status tip for the given column to the given statusTip.
void setText(int column, const QString &text)
Sets the text to be displayed in the given column to the given text.
QSize sizeHint(int column) const
QTreeWidgetItem * child(int index) const
Returns the item at the given index in the list of the item's children.
void setBackground(int column, const QBrush &brush)
Qt::Alignment textAlignment(int column) const
Qt::CheckState checkState(int column) const
Returns the check state of the label in the given column.
void setIcon(int column, const QIcon &icon)
Sets the icon to be displayed in the given column to icon.
virtual void setData(int column, int role, const QVariant &value)
Sets the value for the item's column and role to the given value.
QString text(int column) const
Returns the text in the specified column.
Definition qtreewidget.h:68
QString statusTip(int column) const
Returns the status tip for the contents of the given column.
Definition qtreewidget.h:76
void setTextAlignment(int column, Qt::Alignment alignment)
\obsolete [6.4] Use the overload that takes a Qt::Alignment argument.
QIcon icon(int column) const
Returns the icon that is displayed in the specified column.
Definition qtreewidget.h:72
ItemType
This enum describes the types that are used to describe tree widget items.
Definition qtreewidget.h:30
QTreeWidgetItem * parent() const
Returns the item's parent.
QFont font(int column) const
Returns the font used to render the text in the specified column.
Definition qtreewidget.h:92
void setDisabled(bool disabled)
void setFlags(Qt::ItemFlags flags)
Sets the flags for the item to the given flags.
void sortChildren(int column, Qt::SortOrder order)
bool isDisabled() const
void setFont(int column, const QFont &font)
Sets the font used to display the text in the given column to the given font.
int childCount() const
Returns the number of child items.
QBrush foreground(int column) const
Qt::ItemFlags flags() const
Returns the flags used to describe the item.
int indexOfChild(QTreeWidgetItem *child) const
Returns the index of the given child in the item's list of children.
void setForeground(int column, const QBrush &brush)
QTreeWidget * treeWidget() const
Returns the tree widget that contains the item.
Definition qtreewidget.h:44
void setSizeHint(int column, const QSize &size)
int columnCount() const
Returns the number of columns in the item.
int type() const
Returns the type passed to the QTreeWidgetItem constructor.
void setCheckState(int column, Qt::CheckState state)
Sets the item in the given column check state to be state.
The QTreeWidget class provides a tree view that uses a predefined tree model.
void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget)
void removeItemWidget(QTreeWidgetItem *item, int column)
QTreeWidgetItem * itemAt(const QPoint &p) const
Returns a pointer to the item at the coordinates p.
void setHeaderLabel(const QString &label)
void setHeaderLabels(const QStringList &labels)
Adds a column in the header for each item in the labels list, and sets the label for each column.
\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
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
QOpenGLWidget * widget
[1]
b clear()
QString text
uint alignment
else opt state
[0]
Combined button and popup list for selecting options.
Definition qcompare.h:63
CheckState
AlignmentFlag
Definition qnamespace.h:143
@ WhatsThisRole
@ FontRole
@ TextAlignmentRole
@ ForegroundRole
@ DecorationRole
@ BackgroundRole
@ CheckStateRole
@ StatusTipRole
@ ToolTipRole
@ DisplayRole
@ SizeHintRole
SortOrder
Definition qnamespace.h:121
@ NoBrush
@ ItemIsDragEnabled
@ ItemIsUserCheckable
@ ItemIsSelectable
@ ItemIsEnabled
@ ItemIsDropEnabled
Definition brush.cpp:5
QList< QString > QStringList
Constructs a string list that contains the given string, str.
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum GLsizei GLsizei GLint * values
[15]
GLsizei const GLfloat * v
[13]
GLint GLint GLint GLint GLint x
[0]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint index
[2]
GLsizei const GLchar ** strings
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum type
GLuint GLsizei const GLchar * label
[43]
GLbitfield flags
GLint y
GLenum GLenum GLsizei void GLsizei void * column
struct _cl_event * event
GLuint in
GLenum GLenum GLsizei void GLsizei void void * span
GLfloat GLfloat p
[1]
GLfixed GLfixed GLint GLint order
decorationRoleName toolTipRoleName whatsThisRoleName setTextAlignment
decorationRoleName toolTipRoleName setWhatsThis
decorationRoleName setToolTip
static bool operator<(const QSettingsIniKey &k1, const QSettingsIniKey &k2)
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
#define QT_REQUIRE_CONFIG(feature)
#define QT_DEPRECATED_VERSION_X_6_4(text)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_SLOTS
#define Q_SIGNALS
Q_WIDGETS_EXPORT QDataStream & operator<<(QDataStream &out, const QTreeWidgetItem &item)
Q_WIDGETS_EXPORT QDataStream & operator>>(QDataStream &in, QTreeWidgetItem &item)
ReturnedValue read(const char *data)
#define disabled
#define explicit
view setModel(model)
[17] //! [18]
QSqlQueryModel * model
[16]
gzip write("uncompressed data")
QTextStream out(stdout)
[7]
mimeData setData("text/csv", csvData)
QMimeData * mimeData
QSharedPointer< T > other(t)
[5]
QGraphicsItem * item
edit hide()
selection select(topLeft, bottomRight)
QList< QTreeWidgetItem * > items
treeWidget setColumnCount(1)
treeWidget insertTopLevelItems(0, items)
myAction setIcon(SomeIcon)
QLayoutItem * child
[0]
insertRed setText("insert red text")
QSizePolicy policy
QQuickView * view
[0]
qsizetype indexOf(const AT &t, qsizetype from=0) const noexcept
Definition qlist.h:962
Definition moc.h:23