1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.widgets.treeview; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.abstractitemmodel; 17 import qt.core.coreevent; 18 import qt.core.itemselectionmodel; 19 import qt.core.list; 20 import qt.core.namespace; 21 import qt.core.point; 22 import qt.core.rect; 23 import qt.core.size; 24 import qt.core.string; 25 import qt.gui.event; 26 import qt.gui.painter; 27 import qt.gui.region; 28 import qt.helpers; 29 import qt.widgets.abstractitemview; 30 import qt.widgets.headerview; 31 import qt.widgets.styleoption; 32 import qt.widgets.widget; 33 34 35 /+ QT_REQUIRE_CONFIG(treeview); +/ 36 37 38 extern(C++, class) struct QTreeViewPrivate; 39 40 /// Binding for C++ class [QTreeView](https://doc.qt.io/qt-6/qtreeview.html). 41 class /+ Q_WIDGETS_EXPORT +/ QTreeView : QAbstractItemView 42 { 43 mixin(Q_OBJECT); 44 /+ Q_PROPERTY(int autoExpandDelay READ autoExpandDelay WRITE setAutoExpandDelay) 45 Q_PROPERTY(int indentation READ indentation WRITE setIndentation RESET resetIndentation) 46 Q_PROPERTY(bool rootIsDecorated READ rootIsDecorated WRITE setRootIsDecorated) 47 Q_PROPERTY(bool uniformRowHeights READ uniformRowHeights WRITE setUniformRowHeights) 48 Q_PROPERTY(bool itemsExpandable READ itemsExpandable WRITE setItemsExpandable) 49 Q_PROPERTY(bool sortingEnabled READ isSortingEnabled WRITE setSortingEnabled) 50 Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated) 51 Q_PROPERTY(bool allColumnsShowFocus READ allColumnsShowFocus WRITE setAllColumnsShowFocus) 52 Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap) 53 Q_PROPERTY(bool headerHidden READ isHeaderHidden WRITE setHeaderHidden) 54 Q_PROPERTY(bool expandsOnDoubleClick READ expandsOnDoubleClick WRITE setExpandsOnDoubleClick) +/ 55 56 public: 57 /+ explicit +/this(QWidget parent = null); 58 ~this(); 59 60 override void setModel(QAbstractItemModel model); 61 override void setRootIndex(ref const(QModelIndex) index); 62 override void setSelectionModel(QItemSelectionModel selectionModel); 63 64 final QHeaderView header() const; 65 final void setHeader(QHeaderView header); 66 67 final int autoExpandDelay() const; 68 final void setAutoExpandDelay(int delay); 69 70 final int indentation() const; 71 final void setIndentation(int i); 72 final void resetIndentation(); 73 74 final bool rootIsDecorated() const; 75 final void setRootIsDecorated(bool show); 76 77 final bool uniformRowHeights() const; 78 final void setUniformRowHeights(bool uniform); 79 80 final bool itemsExpandable() const; 81 final void setItemsExpandable(bool enable); 82 83 final bool expandsOnDoubleClick() const; 84 final void setExpandsOnDoubleClick(bool enable); 85 86 final int columnViewportPosition(int column) const; 87 final int columnWidth(int column) const; 88 final void setColumnWidth(int column, int width); 89 final int columnAt(int x) const; 90 91 final bool isColumnHidden(int column) const; 92 final void setColumnHidden(int column, bool hide); 93 94 final bool isHeaderHidden() const; 95 final void setHeaderHidden(bool hide); 96 97 final bool isRowHidden(int row, ref const(QModelIndex) parent) const; 98 final void setRowHidden(int row, ref const(QModelIndex) parent, bool hide); 99 100 final bool isFirstColumnSpanned(int row, ref const(QModelIndex) parent) const; 101 final void setFirstColumnSpanned(int row, ref const(QModelIndex) parent, bool span); 102 103 final bool isExpanded(ref const(QModelIndex) index) const; 104 final void setExpanded(ref const(QModelIndex) index, bool expand); 105 106 final void setSortingEnabled(bool enable); 107 final bool isSortingEnabled() const; 108 109 final void setAnimated(bool enable); 110 final bool isAnimated() const; 111 112 final void setAllColumnsShowFocus(bool enable); 113 final bool allColumnsShowFocus() const; 114 115 final void setWordWrap(bool on); 116 final bool wordWrap() const; 117 118 final void setTreePosition(int logicalIndex); 119 final int treePosition() const; 120 121 override void keyboardSearch(ref const(QString) search); 122 123 override QRect visualRect(ref const(QModelIndex) index) const; 124 override void scrollTo(ref const(QModelIndex) index, ScrollHint hint = ScrollHint.EnsureVisible); 125 override QModelIndex indexAt(ref const(QPoint) p) const; 126 final QModelIndex indexAbove(ref const(QModelIndex) index) const; 127 final QModelIndex indexBelow(ref const(QModelIndex) index) const; 128 129 override void doItemsLayout(); 130 override void reset(); 131 132 override void dataChanged(ref const(QModelIndex) topLeft, ref const(QModelIndex) bottomRight, 133 ref const(QList!(int)) roles = globalInitVar!(QList!(int))); 134 override void selectAll(); 135 136 /+ Q_SIGNALS +/public: 137 @QSignal final void expanded(ref const(QModelIndex) index); 138 @QSignal final void collapsed(ref const(QModelIndex) index); 139 140 public /+ Q_SLOTS +/: 141 @QSlot final void hideColumn(int column); 142 @QSlot final void showColumn(int column); 143 @QSlot final void expand(ref const(QModelIndex) index); 144 @QSlot final void collapse(ref const(QModelIndex) index); 145 @QSlot final void resizeColumnToContents(int column); 146 @QSlot final void sortByColumn(int column, /+ Qt:: +/qt.core.namespace.SortOrder order); 147 @QSlot final void expandAll(); 148 @QSlot final void expandRecursively(ref const(QModelIndex) index, int depth = -1); 149 @QSlot final void collapseAll(); 150 @QSlot final void expandToDepth(int depth); 151 152 protected /+ Q_SLOTS +/: 153 @QSlot final void columnResized(int column, int oldSize, int newSize); 154 @QSlot final void columnCountChanged(int oldCount, int newCount); 155 @QSlot final void columnMoved(); 156 @QSlot final void reexpand(); 157 @QSlot final void rowsRemoved(ref const(QModelIndex) parent, int first, int last); 158 @QSlot override void verticalScrollbarValueChanged(int value); 159 160 protected: 161 this(ref QTreeViewPrivate dd, QWidget parent = null); 162 override void scrollContentsBy(int dx, int dy); 163 override void rowsInserted(ref const(QModelIndex) parent, int start, int end); 164 override void rowsAboutToBeRemoved(ref const(QModelIndex) parent, int start, int end); 165 166 override QModelIndex moveCursor(CursorAction cursorAction, /+ Qt:: +/qt.core.namespace.KeyboardModifiers modifiers); 167 override int horizontalOffset() const; 168 override int verticalOffset() const; 169 170 override void setSelection(ref const(QRect) rect, QItemSelectionModel.SelectionFlags command); 171 override QRegion visualRegionForSelection(ref const(QItemSelection) selection) const; 172 override QModelIndexList selectedIndexes() const; 173 174 override void changeEvent(QEvent event); 175 override void timerEvent(QTimerEvent event); 176 override void paintEvent(QPaintEvent event); 177 178 final void drawTree(QPainter* painter, ref const(QRegion) region) const; 179 /+ virtual +/ void drawRow(QPainter* painter, 180 ref const(QStyleOptionViewItem) options, 181 ref const(QModelIndex) index) const; 182 /+ virtual +/ void drawBranches(QPainter* painter, 183 ref const(QRect) rect, 184 ref const(QModelIndex) index) const; 185 186 override void mousePressEvent(QMouseEvent event); 187 override void mouseReleaseEvent(QMouseEvent event); 188 override void mouseDoubleClickEvent(QMouseEvent event); 189 override void mouseMoveEvent(QMouseEvent event); 190 override void keyPressEvent(QKeyEvent event); 191 /+ #if QT_CONFIG(draganddrop) +/ 192 override void dragMoveEvent(QDragMoveEvent event); 193 /+ #endif +/ 194 override bool viewportEvent(QEvent event); 195 196 override void updateGeometries(); 197 198 override QSize viewportSizeHint() const; 199 200 override int sizeHintForColumn(int column) const; 201 final int indexRowSizeHint(ref const(QModelIndex) index) const; 202 final int rowHeight(ref const(QModelIndex) index) const; 203 204 override void horizontalScrollbarAction(int action); 205 206 override bool isIndexHidden(ref const(QModelIndex) index) const; 207 override void selectionChanged(ref const(QItemSelection) selected, 208 ref const(QItemSelection) deselected); 209 override void currentChanged(ref const(QModelIndex) current, ref const(QModelIndex) previous); 210 211 private: 212 /+ friend class ::tst_QTreeView; +/ 213 /+ friend class QAccessibleTable; +/ 214 /+ friend class QAccessibleTree; +/ 215 /+ friend class QAccessibleTableCell; +/ 216 final int visualIndex(ref const(QModelIndex) index) const; 217 218 /+ Q_DECLARE_PRIVATE(QTreeView) +/ 219 /+ Q_DISABLE_COPY(QTreeView) +/ 220 /+ #if QT_CONFIG(animation) 221 Q_PRIVATE_SLOT(d_func(), void _q_endAnimatedOperation()) 222 #endif // animation 223 Q_PRIVATE_SLOT(d_func(), void _q_modelAboutToBeReset()) 224 Q_PRIVATE_SLOT(d_func(), void _q_sortIndicatorChanged(int column, Qt::SortOrder order)) +/ 225 mixin(CREATE_CONVENIENCE_WRAPPERS); 226 } 227