1 /****************************************************************************
2 **
3 ** DQt - D bindings for the Qt Toolkit
4 **
5 ** GNU Lesser General Public License Usage
6 ** This file may be used under the terms of the GNU Lesser
7 ** General Public License version 3 as published by the Free Software
8 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
9 ** packaging of this file. Please review the following information to
10 ** ensure the GNU Lesser General Public License version 3 requirements
11 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
12 **
13 ****************************************************************************/
14 module qt.widgets.treewidget;
15 extern(C++):
16 
17 import qt.config;
18 import qt.core.abstractitemmodel;
19 import qt.core.coreevent;
20 import qt.core.itemselectionmodel;
21 import qt.core.list;
22 import qt.core.mimedata;
23 import qt.core.namespace;
24 import qt.core.point;
25 import qt.core.rect;
26 import qt.core.size;
27 import qt.core.string;
28 import qt.core.stringlist;
29 import qt.core.variant;
30 import qt.core.vector;
31 import qt.gui.brush;
32 import qt.gui.color;
33 import qt.gui.event;
34 import qt.gui.font;
35 import qt.gui.icon;
36 import qt.helpers;
37 import qt.widgets.abstractitemview;
38 import qt.widgets.treeview;
39 import qt.widgets.treewidgetitemiterator;
40 import qt.widgets.widget;
41 import qt.widgets.widgetitemdata;
42 version(QT_NO_DATASTREAM){}else
43     import qt.core.datastream;
44 
45 /+ QT_REQUIRE_CONFIG(treewidget);
46 
47 
48 class QTreeWidget;
49 class QTreeModel; +/
50 extern(C++, class) struct QTreeWidgetItemPrivate;
51 
52 class /+ Q_WIDGETS_EXPORT +/ QTreeWidgetItem
53 {
54 private:
55     /+ friend class QTreeModel; +/
56     /+ friend class QTreeWidget; +/
57     /+ friend class QTreeWidgetPrivate; +/
58     /+ friend class QTreeWidgetItemIterator; +/
59     /+ friend class QTreeWidgetItemPrivate; +/
60 public:
61     enum ItemType { Type = 0, UserType = 1000 }
62     /+ explicit +/this(int type = ItemType.Type);
63     /+ explicit +/this(ref const(QStringList) strings, int type = ItemType.Type);
64     /+ explicit +/this(QTreeWidget treeview, int type = ItemType.Type);
65     this(QTreeWidget treeview, ref const(QStringList) strings, int type = ItemType.Type);
66     this(QTreeWidget treeview, QTreeWidgetItem after, int type = ItemType.Type);
67     /+ explicit +/this(QTreeWidgetItem parent, int type = ItemType.Type);
68     this(QTreeWidgetItem parent, ref const(QStringList) strings, int type = ItemType.Type);
69     this(QTreeWidgetItem parent, QTreeWidgetItem after, int type = ItemType.Type);
70     /+ QTreeWidgetItem(const QTreeWidgetItem &other); +/
71     /+ virtual +/~this();
72 
73     /+ virtual +/ QTreeWidgetItem clone() const;
74 
75     pragma(inline, true) final QTreeWidget treeWidget() const { return cast(QTreeWidget)view; }
76 
77     final void setSelected(bool select);
78     final bool isSelected() const;
79 
80     final void setHidden(bool hide);
81     final bool isHidden() const;
82 
83     final void setExpanded(bool expand);
84     final bool isExpanded() const;
85 
86     final void setFirstColumnSpanned(bool span);
87     final bool isFirstColumnSpanned() const;
88 
89     pragma(inline, true) final void setDisabled(bool disabled)
90     { setFlags(disabled ? (flags() & ~/+ Qt:: +/qt.core.namespace.ItemFlag.ItemIsEnabled) : flags() | /+ Qt:: +/qt.core.namespace.ItemFlag.ItemIsEnabled); }
91     pragma(inline, true) final bool isDisabled() const
92     { return !(flags() & /+ Qt:: +/qt.core.namespace.ItemFlag.ItemIsEnabled); }
93 
94     enum ChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless }
95     final void setChildIndicatorPolicy(QTreeWidgetItem.ChildIndicatorPolicy policy);
96     final QTreeWidgetItem.ChildIndicatorPolicy childIndicatorPolicy() const;
97 
98     final /+ Qt:: +/qt.core.namespace.ItemFlags flags() const;
99     final void setFlags(/+ Qt:: +/qt.core.namespace.ItemFlags flags);
100 
101     pragma(inline, true) final QString text(int column) const
102         { return data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.DisplayRole).toString(); }
103     pragma(inline, true) final void setText(int column, ref const(QString) atext)
104     { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.DisplayRole, atext); }
105     final void setText(int column, const(QString) atext) { setText(column, atext); }
106 
107     pragma(inline, true) final QIcon icon(int column) const
108         { return qvariant_cast!(QIcon)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.DecorationRole)); }
109     pragma(inline, true) final void setIcon(int column, ref const(QIcon) aicon)
110     { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.DecorationRole, aicon); }
111 
112     pragma(inline, true) final QString statusTip(int column) const
113         { return data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.StatusTipRole).toString(); }
114     pragma(inline, true) final void setStatusTip(int column, ref const(QString) astatusTip)
115     { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.StatusTipRole, astatusTip); }
116     pragma(inline, true) final void setStatusTip(int column, const(QString) astatusTip)
117     { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.StatusTipRole, astatusTip); }
118 
119 /+ #ifndef QT_NO_TOOLTIP +/
120     version(QT_NO_TOOLTIP){}else
121     {
122         pragma(inline, true) final QString toolTip(int column) const
123             { return data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.ToolTipRole).toString(); }
124         pragma(inline, true) final void setToolTip(int column, ref const(QString) atoolTip)
125         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.ToolTipRole, atoolTip); }
126         pragma(inline, true) final void setToolTip(int column, const(QString) atoolTip)
127         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.ToolTipRole, atoolTip); }
128     }
129 /+ #endif
130 
131 #if QT_CONFIG(whatsthis) +/
132     pragma(inline, true) final QString whatsThis(int column) const
133         { return data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.WhatsThisRole).toString(); }
134     pragma(inline, true) final void setWhatsThis(int column, ref const(QString) awhatsThis)
135     { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.WhatsThisRole, awhatsThis); }
136     pragma(inline, true) final void setWhatsThis(int column, const(QString) awhatsThis)
137     { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.WhatsThisRole, awhatsThis); }
138 /+ #endif +/
139 
140     pragma(inline, true) final QFont font(int column) const
141         { return qvariant_cast!(QFont)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.FontRole)); }
142     pragma(inline, true) final void setFont(int column, ref const(QFont) afont)
143     { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.FontRole, afont); }
144 
145     pragma(inline, true) final int textAlignment(int column) const
146         { return data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.TextAlignmentRole).toInt(); }
147     pragma(inline, true) final void setTextAlignment(int column, int alignment)
148         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.TextAlignmentRole, alignment); }
149 
150 /+ #if QT_DEPRECATED_SINCE(5, 13) +/
151     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::background() instead") +/
152         pragma(inline, true) final QColor backgroundColor(int column) const
153         { return qvariant_cast!(QColor)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.BackgroundRole)); }
154     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::setBackground() instead") +/
155         pragma(inline, true) final void setBackgroundColor(int column, ref const(QColor) color)
156         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.BackgroundRole, color); }
157 /+ #endif +/
158 
159     pragma(inline, true) final QBrush background(int column) const
160         { return qvariant_cast!(QBrush)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.BackgroundRole)); }
161     pragma(inline, true) final void setBackground(int column, ref const(QBrush) brush)
162         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.BackgroundRole, brush.style() != /+ Qt:: +/qt.core.namespace.BrushStyle.NoBrush ? QVariant.fromValue(brush) : QVariant()); }
163     pragma(inline, true) final void setBackground(int column, const(QBrush) brush)
164         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.BackgroundRole, brush.style() != /+ Qt:: +/qt.core.namespace.BrushStyle.NoBrush ? QVariant.fromValue(brush) : QVariant()); }
165     pragma(inline, true) final void setBackground(int column, const(QColor) color)
166         { setBackground(column, QBrush(color)); }
167 
168 /+ #if QT_DEPRECATED_SINCE(5, 13) +/
169     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::foreground() instead") +/
170         pragma(inline, true) final QColor textColor(int column) const
171         { return qvariant_cast!(QColor)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.ForegroundRole)); }
172     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::setForeground() instead") +/
173         pragma(inline, true) final void setTextColor(int column, ref const(QColor) color)
174         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.ForegroundRole, color); }
175 /+ #endif +/
176 
177     pragma(inline, true) final QBrush foreground(int column) const
178         { return qvariant_cast!(QBrush)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.ForegroundRole)); }
179     pragma(inline, true) final void setForeground(int column, ref const(QBrush) brush)
180         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.ForegroundRole, brush.style() != /+ Qt:: +/qt.core.namespace.BrushStyle.NoBrush ? QVariant.fromValue(brush) : QVariant()); }
181 
182     pragma(inline, true) final /+ Qt:: +/qt.core.namespace.CheckState checkState(int column) const
183         { return static_cast!(/+ Qt:: +/qt.core.namespace.CheckState)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.CheckStateRole).toInt()); }
184     pragma(inline, true) final void setCheckState(int column, /+ Qt:: +/qt.core.namespace.CheckState state)
185         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.CheckStateRole, cast(int)state); }
186 
187     pragma(inline, true) final QSize sizeHint(int column) const
188         { return qvariant_cast!(QSize)(data(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.SizeHintRole)); }
189     pragma(inline, true) final void setSizeHint(int column, ref const(QSize) size)
190         { setData(column, /+ Qt:: +/qt.core.namespace.ItemDataRole.SizeHintRole, size.isValid() ? QVariant(size) : QVariant()); }
191 
192     /+ virtual +/ QVariant data(int column, int role) const;
193     /+ virtual +/ void setData(int column, int role, ref const(QVariant) value);
194     final void setData(T)(int column, int role, T value)
195     {
196         static if(is(const(T) == const(QVariant)))
197             QVariant v = value;
198         else
199             QVariant v = QVariant.fromValue(value);
200         setData(column, role, v);
201     }
202 
203     pragma(mangle, mangleOpLess("QTreeWidgetItem"))
204     bool opLess(const(QTreeWidgetItem) other) const;
205 
206     version(QT_NO_DATASTREAM){}else
207     {
208         /+ virtual +/ void read(ref QDataStream in_);
209         /+ virtual +/ void write(ref QDataStream out_) const;
210     }
211     /+ QTreeWidgetItem &operator=(const QTreeWidgetItem &other); +/
212 
213     pragma(inline, true) final QTreeWidgetItem parent() const { return cast(QTreeWidgetItem)par; }
214     pragma(inline, true) final QTreeWidgetItem child(int index) const {
215         if (index < 0 || index >= children.size())
216             return null;
217         executePendingSort();
218         return cast(QTreeWidgetItem)children.at(index);
219     }
220     pragma(inline, true) final int childCount() const { return children.count(); }
221     pragma(inline, true) final int columnCount() const { return values.count(); }
222     pragma(inline, true) final int indexOfChild(QTreeWidgetItem achild) const
223     { executePendingSort(); return children.indexOf(achild); }
224 
225     final void addChild(QTreeWidgetItem child);
226     final void insertChild(int index, QTreeWidgetItem child);
227     final void removeChild(QTreeWidgetItem child);
228     final QTreeWidgetItem takeChild(int index);
229 
230     final void addChildren(ref const(QList!(QTreeWidgetItem)) children);
231     final void insertChildren(int index, ref const(QList!(QTreeWidgetItem)) children);
232     final QList!(QTreeWidgetItem) takeChildren();
233 
234     pragma(inline, true) final int type() const { return rtti; }
235     pragma(inline, true) final void sortChildren(int column, /+ Qt:: +/qt.core.namespace.SortOrder order)
236         { sortChildren(column, order, false); }
237 
238 protected:
239     final void emitDataChanged();
240 
241 private:
242     final void sortChildren(int column, /+ Qt:: +/qt.core.namespace.SortOrder order, bool climb);
243     final QVariant childrenCheckState(int column) const;
244     final void itemChanged();
245     final void executePendingSort() const;
246     final QTreeModel* treeModel(QTreeWidget v = null) const;
247 
248     int rtti;
249     // One item has a vector of column entries. Each column has a vector of (role, value) pairs.
250      QVector!( QVector!(QWidgetItemData)) values;
251     QTreeWidget view;
252     QTreeWidgetItemPrivate* d;
253     QTreeWidgetItem par;
254     QList!(QTreeWidgetItem) children;
255     /+ Qt:: +/qt.core.namespace.ItemFlags itemFlags;
256 }
257 
258 /+ #if QT_CONFIG(statustip)
259 #endif
260 
261 #ifndef QT_NO_TOOLTIP
262 #endif
263 
264 #if QT_CONFIG(whatsthis)
265 #endif
266 
267 #ifndef QT_NO_DATASTREAM
268 Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item);
269 Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item);
270 #endif +/
271 
272 extern(C++, class) struct QTreeWidgetPrivate;
273 
274 class /+ Q_WIDGETS_EXPORT +/ QTreeWidget : QTreeView
275 {
276     mixin(Q_OBJECT);
277     /+ Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount)
278     Q_PROPERTY(int topLevelItemCount READ topLevelItemCount) +/
279 
280     /+ friend class QTreeModel; +/
281     /+ friend class QTreeWidgetItem; +/
282 public:
283     /+ explicit +/this(QWidget parent = null);
284     ~this();
285 
286     final int columnCount() const;
287     final void setColumnCount(int columns);
288 
289     final QTreeWidgetItem invisibleRootItem() const;
290     final QTreeWidgetItem topLevelItem(int index) const;
291     final int topLevelItemCount() const;
292     final void insertTopLevelItem(int index, QTreeWidgetItem item);
293     final void addTopLevelItem(QTreeWidgetItem item);
294     final QTreeWidgetItem takeTopLevelItem(int index);
295     final int indexOfTopLevelItem(QTreeWidgetItem item) const;
296 
297     final void insertTopLevelItems(int index, ref const(QList!(QTreeWidgetItem)) items);
298     final void addTopLevelItems(ref const(QList!(QTreeWidgetItem)) items);
299 
300     final QTreeWidgetItem headerItem() const;
301     final void setHeaderItem(QTreeWidgetItem item);
302     final void setHeaderLabels(ref const(QStringList) labels);
303 /+    pragma(inline, true) final void setHeaderLabel(ref const(QString) alabel)
304     { auto tmp = QStringList(alabel); setHeaderLabels(tmp); }+/
305 
306     final QTreeWidgetItem currentItem() const;
307     final int currentColumn() const;
308     final void setCurrentItem(QTreeWidgetItem item);
309     final void setCurrentItem(QTreeWidgetItem item, int column);
310     final void setCurrentItem(QTreeWidgetItem item, int column, QItemSelectionModel.SelectionFlags command);
311 
312     final QTreeWidgetItem itemAt(ref const(QPoint) p) const;
313     pragma(inline, true) final QTreeWidgetItem itemAt(int ax, int ay) const
314     { auto tmp = QPoint(ax, ay); return itemAt(tmp); }
315     final QRect visualItemRect(const(QTreeWidgetItem) item) const;
316 
317     final int sortColumn() const;
318     final void sortItems(int column, /+ Qt:: +/qt.core.namespace.SortOrder order);
319 
320     final void editItem(QTreeWidgetItem item, int column = 0);
321     final void openPersistentEditor(QTreeWidgetItem item, int column = 0);
322     final void closePersistentEditor(QTreeWidgetItem item, int column = 0);
323     /+ using QAbstractItemView::isPersistentEditorOpen; +/
324     final bool isPersistentEditorOpen(QTreeWidgetItem item, int column = 0) const;
325 
326     final QWidget itemWidget(QTreeWidgetItem item, int column) const;
327     final void setItemWidget(QTreeWidgetItem item, int column, QWidget widget);
328     pragma(inline, true) final void removeItemWidget(QTreeWidgetItem item, int column)
329     { setItemWidget(item, column, null); }
330 
331 /+ #if QT_DEPRECATED_SINCE(5, 13) +/
332     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::isSelected() instead") +/
333         final bool isItemSelected(const(QTreeWidgetItem) item) const;
334     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::setSelected() instead") +/
335         final void setItemSelected(const(QTreeWidgetItem) item, bool select);
336 /+ #endif +/
337     final QList!(QTreeWidgetItem) selectedItems() const;
338     final QList!(QTreeWidgetItem) findItems(ref const(QString) text, /+ Qt:: +/qt.core.namespace.MatchFlags flags,
339                                           int column = 0) const;
340 
341 /+ #if QT_DEPRECATED_SINCE(5, 13) +/
342     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::isHidden() instead") +/
343         final bool isItemHidden(const(QTreeWidgetItem) item) const;
344     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::setHidden() instead") +/
345         final void setItemHidden(const(QTreeWidgetItem) item, bool hide);
346 
347     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::isExpanded() instead") +/
348         final bool isItemExpanded(const(QTreeWidgetItem) item) const;
349     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::setExpanded() instead") +/
350         final void setItemExpanded(const(QTreeWidgetItem) item, bool expand);
351 
352     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::isFirstColumnSpanned() instead") +/
353         final bool isFirstItemColumnSpanned(const(QTreeWidgetItem) item) const;
354     /+ QT_DEPRECATED_X ("Use QTreeWidgetItem::setFirstColumnSpanned() instead") +/
355         final void setFirstItemColumnSpanned(const(QTreeWidgetItem) item, bool span);
356 /+ #endif +/
357 
358     final QTreeWidgetItem itemAbove(const(QTreeWidgetItem) item) const;
359     final QTreeWidgetItem itemBelow(const(QTreeWidgetItem) item) const;
360 
361     override void setSelectionModel(QItemSelectionModel selectionModel);
362 
363 public /+ Q_SLOTS +/:
364     @QSlot final void scrollToItem(const(QTreeWidgetItem) item,
365                           QAbstractItemView.ScrollHint hint = ScrollHint.EnsureVisible);
366     @QSlot final void expandItem(const(QTreeWidgetItem) item);
367     @QSlot final void collapseItem(const(QTreeWidgetItem) item);
368     @QSlot final void clear();
369 
370 /+ Q_SIGNALS +/public:
371     @QSignal final void itemPressed(QTreeWidgetItem item, int column);
372     @QSignal final void itemClicked(QTreeWidgetItem item, int column);
373     @QSignal final void itemDoubleClicked(QTreeWidgetItem item, int column);
374     @QSignal final void itemActivated(QTreeWidgetItem item, int column);
375     @QSignal final void itemEntered(QTreeWidgetItem item, int column);
376     // ### Qt 6: add changed roles
377     @QSignal final void itemChanged(QTreeWidgetItem item, int column);
378     @QSignal final void itemExpanded(QTreeWidgetItem item);
379     @QSignal final void itemCollapsed(QTreeWidgetItem item);
380     @QSignal final void currentItemChanged(QTreeWidgetItem current, QTreeWidgetItem previous);
381     @QSignal final void itemSelectionChanged();
382 
383 protected:
384     override bool event(QEvent e);
385     /+ virtual +/ QStringList mimeTypes() const;
386 /+ #if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
387     virtual QMimeData *mimeData(const QList<QTreeWidgetItem *> &items) const;
388 #else +/
389     /+ virtual +/ QMimeData mimeData(const(QList!(QTreeWidgetItem)) items) const;
390 /+ #endif +/
391     mixin(mangleWindows("?dropMimeData@QTreeWidget@@MEAA_NPEAVQTreeWidgetItem@@HPEBVQMimeData@@W4DropAction@Qt@@@Z", q{
392     /+ virtual +/ bool dropMimeData(QTreeWidgetItem parent, int index,
393                                   const(QMimeData) data, /+ Qt:: +/qt.core.namespace.DropAction action);
394     }));
395     /+ virtual +/ /+ Qt:: +/qt.core.namespace.DropActions supportedDropActions() const;
396 
397 /+ #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
398 public:
399 #else +/
400 protected:
401 /+ #endif +/
402     final QList!(QTreeWidgetItem) items(const(QMimeData) data) const;
403 
404     final QModelIndex indexFromItem(const(QTreeWidgetItem) item, int column = 0) const;
405 /+ #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +/
406     final QModelIndex indexFromItem(QTreeWidgetItem item, int column = 0) const; // ### Qt 6: remove
407 /+ #endif +/
408     final QTreeWidgetItem itemFromIndex(ref const(QModelIndex) index) const;
409 
410 protected:
411 /+ #if QT_CONFIG(draganddrop) +/
412     override void dropEvent(QDropEvent event);
413 /+ #endif +/
414 private:
415     mixin(mangleWindows("?setModel@QTreeWidget@@EEAAXPEAVQAbstractItemModel@@@Z", q{
416     protected override void setModel(QAbstractItemModel model);
417     }));
418 
419     /+ Q_DECLARE_PRIVATE(QTreeWidget) +/
420     /+ Q_DISABLE_COPY(QTreeWidget) +/
421 
422     /+ Q_PRIVATE_SLOT(d_func(), void _q_emitItemPressed(const QModelIndex &index))
423     Q_PRIVATE_SLOT(d_func(), void _q_emitItemClicked(const QModelIndex &index))
424     Q_PRIVATE_SLOT(d_func(), void _q_emitItemDoubleClicked(const QModelIndex &index))
425     Q_PRIVATE_SLOT(d_func(), void _q_emitItemActivated(const QModelIndex &index))
426     Q_PRIVATE_SLOT(d_func(), void _q_emitItemEntered(const QModelIndex &index))
427     Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &index))
428     Q_PRIVATE_SLOT(d_func(), void _q_emitItemExpanded(const QModelIndex &index))
429     Q_PRIVATE_SLOT(d_func(), void _q_emitItemCollapsed(const QModelIndex &index))
430     Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex &current))
431     Q_PRIVATE_SLOT(d_func(), void _q_sort())
432     Q_PRIVATE_SLOT(d_func(), void _q_dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight))
433     Q_PRIVATE_SLOT(d_func(), void _q_selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)) +/
434 }
435