Warning, file /include/QtWidgets/qtreewidget.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005 #ifndef QTREEWIDGET_H
0006 #define QTREEWIDGET_H
0007
0008 #include <QtWidgets/qtreeview.h>
0009 #include <QtWidgets/qtreewidgetitemiterator.h>
0010 #include <QtWidgets/qtwidgetsglobal.h>
0011 #include <QtCore/qlist.h>
0012 #include <QtCore/qvariant.h>
0013
0014 QT_REQUIRE_CONFIG(treewidget);
0015
0016 QT_BEGIN_NAMESPACE
0017
0018 class QTreeWidget;
0019 class QTreeModel;
0020 class QWidgetItemData;
0021 class QTreeWidgetItemPrivate;
0022
0023 class Q_WIDGETS_EXPORT QTreeWidgetItem
0024 {
0025 friend class QTreeModel;
0026 friend class QTreeWidget;
0027 friend class QTreeWidgetPrivate;
0028 friend class QTreeWidgetItemIterator;
0029 friend class QTreeWidgetItemPrivate;
0030 public:
0031 enum ItemType { Type = 0, UserType = 1000 };
0032 explicit QTreeWidgetItem(int type = Type);
0033 explicit QTreeWidgetItem(const QStringList &strings, int type = Type);
0034 explicit QTreeWidgetItem(QTreeWidget *treeview, int type = Type);
0035 QTreeWidgetItem(QTreeWidget *treeview, const QStringList &strings, int type = Type);
0036 QTreeWidgetItem(QTreeWidget *treeview, QTreeWidgetItem *after, int type = Type);
0037 explicit QTreeWidgetItem(QTreeWidgetItem *parent, int type = Type);
0038 QTreeWidgetItem(QTreeWidgetItem *parent, const QStringList &strings, int type = Type);
0039 QTreeWidgetItem(QTreeWidgetItem *parent, QTreeWidgetItem *after, int type = Type);
0040 QTreeWidgetItem(const QTreeWidgetItem &other);
0041 virtual ~QTreeWidgetItem();
0042
0043 virtual QTreeWidgetItem *clone() const;
0044
0045 inline QTreeWidget *treeWidget() const { return view; }
0046
0047 void setSelected(bool select);
0048 bool isSelected() const;
0049
0050 void setHidden(bool hide);
0051 bool isHidden() const;
0052
0053 void setExpanded(bool expand);
0054 bool isExpanded() const;
0055
0056 void setFirstColumnSpanned(bool span);
0057 bool isFirstColumnSpanned() const;
0058
0059 inline void setDisabled(bool disabled);
0060 inline bool isDisabled() const;
0061
0062 enum ChildIndicatorPolicy { ShowIndicator, DontShowIndicator, DontShowIndicatorWhenChildless };
0063 void setChildIndicatorPolicy(QTreeWidgetItem::ChildIndicatorPolicy policy);
0064 QTreeWidgetItem::ChildIndicatorPolicy childIndicatorPolicy() const;
0065
0066 Qt::ItemFlags flags() const;
0067 void setFlags(Qt::ItemFlags flags);
0068
0069 inline QString text(int column) const
0070 { return data(column, Qt::DisplayRole).toString(); }
0071 inline void setText(int column, const QString &text);
0072
0073 inline QIcon icon(int column) const
0074 { return qvariant_cast<QIcon>(data(column, Qt::DecorationRole)); }
0075 inline void setIcon(int column, const QIcon &icon);
0076
0077 inline QString statusTip(int column) const
0078 { return data(column, Qt::StatusTipRole).toString(); }
0079 inline void setStatusTip(int column, const QString &statusTip);
0080
0081 #if QT_CONFIG(tooltip)
0082 inline QString toolTip(int column) const
0083 { return data(column, Qt::ToolTipRole).toString(); }
0084 inline void setToolTip(int column, const QString &toolTip);
0085 #endif
0086
0087 #if QT_CONFIG(whatsthis)
0088 inline QString whatsThis(int column) const
0089 { return data(column, Qt::WhatsThisRole).toString(); }
0090 inline void setWhatsThis(int column, const QString &whatsThis);
0091 #endif
0092
0093 inline QFont font(int column) const
0094 { return qvariant_cast<QFont>(data(column, Qt::FontRole)); }
0095 inline void setFont(int column, const QFont &font);
0096
0097 #if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
0098 inline int textAlignment(int column) const
0099 { return data(column, Qt::TextAlignmentRole).toInt(); }
0100 #else
0101 inline Qt::Alignment textAlignment(int column) const
0102 { return qvariant_cast<Qt::Alignment>(data(column, Qt::TextAlignmentRole)); }
0103 #endif
0104 #if QT_DEPRECATED_SINCE(6, 4)
0105 QT_DEPRECATED_VERSION_X_6_4("Use the overload taking Qt::Alignment")
0106 inline void setTextAlignment(int column, int alignment)
0107 { setData(column, Qt::TextAlignmentRole, alignment); }
0108 inline void setTextAlignment(int column, Qt::AlignmentFlag alignment)
0109 { setData(column, Qt::TextAlignmentRole, QVariant::fromValue(Qt::Alignment(alignment))); }
0110 #endif
0111 inline void setTextAlignment(int column, Qt::Alignment alignment)
0112 { setData(column, Qt::TextAlignmentRole, QVariant::fromValue(alignment)); }
0113
0114 inline QBrush background(int column) const
0115 { return qvariant_cast<QBrush>(data(column, Qt::BackgroundRole)); }
0116 inline void setBackground(int column, const QBrush &brush)
0117 { setData(column, Qt::BackgroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
0118
0119 inline QBrush foreground(int column) const
0120 { return qvariant_cast<QBrush>(data(column, Qt::ForegroundRole)); }
0121 inline void setForeground(int column, const QBrush &brush)
0122 { setData(column, Qt::ForegroundRole, brush.style() != Qt::NoBrush ? QVariant(brush) : QVariant()); }
0123
0124 inline Qt::CheckState checkState(int column) const
0125 { return qvariant_cast<Qt::CheckState>(data(column, Qt::CheckStateRole)); }
0126 inline void setCheckState(int column, Qt::CheckState state)
0127 { setData(column, Qt::CheckStateRole, state); }
0128
0129 inline QSize sizeHint(int column) const
0130 { return qvariant_cast<QSize>(data(column, Qt::SizeHintRole)); }
0131 inline void setSizeHint(int column, const QSize &size)
0132 { setData(column, Qt::SizeHintRole, size.isValid() ? QVariant(size) : QVariant()); }
0133
0134 virtual QVariant data(int column, int role) const;
0135 virtual void setData(int column, int role, const QVariant &value);
0136
0137 virtual bool operator<(const QTreeWidgetItem &other) const;
0138
0139 #ifndef QT_NO_DATASTREAM
0140 virtual void read(QDataStream &in);
0141 virtual void write(QDataStream &out) const;
0142 #endif
0143 QTreeWidgetItem &operator=(const QTreeWidgetItem &other);
0144
0145 inline QTreeWidgetItem *parent() const { return par; }
0146 inline QTreeWidgetItem *child(int index) const {
0147 if (index < 0 || index >= children.size())
0148 return nullptr;
0149 executePendingSort();
0150 return children.at(index);
0151 }
0152 inline int childCount() const { return int(children.size()); }
0153 inline int columnCount() const { return int(values.size()); }
0154 inline int indexOfChild(QTreeWidgetItem *child) const;
0155
0156 void addChild(QTreeWidgetItem *child);
0157 void insertChild(int index, QTreeWidgetItem *child);
0158 void removeChild(QTreeWidgetItem *child);
0159 QTreeWidgetItem *takeChild(int index);
0160
0161 void addChildren(const QList<QTreeWidgetItem*> &children);
0162 void insertChildren(int index, const QList<QTreeWidgetItem*> &children);
0163 QList<QTreeWidgetItem*> takeChildren();
0164
0165 inline int type() const { return rtti; }
0166 inline void sortChildren(int column, Qt::SortOrder order)
0167 { sortChildren(column, order, false); }
0168
0169 protected:
0170 void emitDataChanged();
0171
0172 private:
0173 void sortChildren(int column, Qt::SortOrder order, bool climb);
0174 QVariant childrenCheckState(int column) const;
0175 void itemChanged();
0176 void executePendingSort() const;
0177 QTreeModel *treeModel(QTreeWidget *v = nullptr) const;
0178
0179 int rtti;
0180
0181 QList<QList<QWidgetItemData>> values;
0182 QTreeWidget *view = nullptr;
0183 QTreeWidgetItemPrivate *d;
0184 QTreeWidgetItem *par = nullptr;
0185
0186
0187 QList<QTreeWidgetItem*> children;
0188 Qt::ItemFlags itemFlags = Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled
0189 | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled;
0190 };
0191
0192 inline void QTreeWidgetItem::setText(int column, const QString &atext)
0193 { setData(column, Qt::DisplayRole, atext); }
0194
0195 inline void QTreeWidgetItem::setIcon(int column, const QIcon &aicon)
0196 { setData(column, Qt::DecorationRole, aicon); }
0197
0198 #if QT_CONFIG(statustip)
0199 inline void QTreeWidgetItem::setStatusTip(int column, const QString &astatusTip)
0200 { setData(column, Qt::StatusTipRole, astatusTip); }
0201 #endif
0202
0203 #if QT_CONFIG(tooltip)
0204 inline void QTreeWidgetItem::setToolTip(int column, const QString &atoolTip)
0205 { setData(column, Qt::ToolTipRole, atoolTip); }
0206 #endif
0207
0208 #if QT_CONFIG(whatsthis)
0209 inline void QTreeWidgetItem::setWhatsThis(int column, const QString &awhatsThis)
0210 { setData(column, Qt::WhatsThisRole, awhatsThis); }
0211 #endif
0212
0213 inline void QTreeWidgetItem::setFont(int column, const QFont &afont)
0214 { setData(column, Qt::FontRole, afont); }
0215
0216 inline int QTreeWidgetItem::indexOfChild(QTreeWidgetItem *achild) const
0217 { executePendingSort(); return int(children.indexOf(achild)); }
0218
0219 #ifndef QT_NO_DATASTREAM
0220 Q_WIDGETS_EXPORT QDataStream &operator<<(QDataStream &out, const QTreeWidgetItem &item);
0221 Q_WIDGETS_EXPORT QDataStream &operator>>(QDataStream &in, QTreeWidgetItem &item);
0222 #endif
0223
0224 class QTreeWidgetPrivate;
0225
0226 class Q_WIDGETS_EXPORT QTreeWidget : public QTreeView
0227 {
0228 Q_OBJECT
0229 Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount)
0230 Q_PROPERTY(int topLevelItemCount READ topLevelItemCount)
0231 #if QT_CONFIG(draganddrop)
0232 Q_PROPERTY(Qt::DropActions supportedDragActions READ supportedDragActions WRITE setSupportedDragActions)
0233 #endif
0234
0235 friend class QTreeModel;
0236 friend class QTreeWidgetItem;
0237 public:
0238 explicit QTreeWidget(QWidget *parent = nullptr);
0239 ~QTreeWidget();
0240
0241 int columnCount() const;
0242 void setColumnCount(int columns);
0243
0244 QTreeWidgetItem *invisibleRootItem() const;
0245 QTreeWidgetItem *topLevelItem(int index) const;
0246 int topLevelItemCount() const;
0247 void insertTopLevelItem(int index, QTreeWidgetItem *item);
0248 void addTopLevelItem(QTreeWidgetItem *item);
0249 QTreeWidgetItem *takeTopLevelItem(int index);
0250 int indexOfTopLevelItem(QTreeWidgetItem *item) const;
0251
0252 void insertTopLevelItems(int index, const QList<QTreeWidgetItem*> &items);
0253 void addTopLevelItems(const QList<QTreeWidgetItem*> &items);
0254
0255 QTreeWidgetItem *headerItem() const;
0256 void setHeaderItem(QTreeWidgetItem *item);
0257 void setHeaderLabels(const QStringList &labels);
0258 inline void setHeaderLabel(const QString &label);
0259
0260 QTreeWidgetItem *currentItem() const;
0261 int currentColumn() const;
0262 void setCurrentItem(QTreeWidgetItem *item);
0263 void setCurrentItem(QTreeWidgetItem *item, int column);
0264 void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command);
0265
0266 QTreeWidgetItem *itemAt(const QPoint &p) const;
0267 inline QTreeWidgetItem *itemAt(int x, int y) const;
0268 QRect visualItemRect(const QTreeWidgetItem *item) const;
0269
0270 int sortColumn() const;
0271 void sortItems(int column, Qt::SortOrder order);
0272
0273 void editItem(QTreeWidgetItem *item, int column = 0);
0274 void openPersistentEditor(QTreeWidgetItem *item, int column = 0);
0275 void closePersistentEditor(QTreeWidgetItem *item, int column = 0);
0276 using QAbstractItemView::isPersistentEditorOpen;
0277 bool isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const;
0278
0279 QWidget *itemWidget(QTreeWidgetItem *item, int column) const;
0280 void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget);
0281 inline void removeItemWidget(QTreeWidgetItem *item, int column);
0282
0283 QList<QTreeWidgetItem*> selectedItems() const;
0284 QList<QTreeWidgetItem*> findItems(const QString &text, Qt::MatchFlags flags,
0285 int column = 0) const;
0286
0287 QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const;
0288 QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const;
0289
0290 QModelIndex indexFromItem(const QTreeWidgetItem *item, int column = 0) const;
0291 QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const;
0292
0293 void setSelectionModel(QItemSelectionModel *selectionModel) override;
0294
0295 #if QT_CONFIG(draganddrop)
0296 Qt::DropActions supportedDragActions() const;
0297 void setSupportedDragActions(Qt::DropActions actions);
0298 #endif
0299
0300 public Q_SLOTS:
0301 void scrollToItem(const QTreeWidgetItem *item,
0302 QAbstractItemView::ScrollHint hint = EnsureVisible);
0303 void expandItem(const QTreeWidgetItem *item);
0304 void collapseItem(const QTreeWidgetItem *item);
0305 void clear();
0306
0307 Q_SIGNALS:
0308 void itemPressed(QTreeWidgetItem *item, int column);
0309 void itemClicked(QTreeWidgetItem *item, int column);
0310 void itemDoubleClicked(QTreeWidgetItem *item, int column);
0311 void itemActivated(QTreeWidgetItem *item, int column);
0312 void itemEntered(QTreeWidgetItem *item, int column);
0313 void itemChanged(QTreeWidgetItem *item, int column);
0314 void itemExpanded(QTreeWidgetItem *item);
0315 void itemCollapsed(QTreeWidgetItem *item);
0316 void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous);
0317 void itemSelectionChanged();
0318
0319 protected:
0320 bool event(QEvent *e) override;
0321 virtual QStringList mimeTypes() const;
0322 virtual QMimeData *mimeData(const QList<QTreeWidgetItem *> &items) const;
0323 virtual bool dropMimeData(QTreeWidgetItem *parent, int index,
0324 const QMimeData *data, Qt::DropAction action);
0325 virtual Qt::DropActions supportedDropActions() const;
0326
0327 #if QT_CONFIG(draganddrop)
0328 void dropEvent(QDropEvent *event) override;
0329 #endif
0330 private:
0331 void setModel(QAbstractItemModel *model) override;
0332
0333 Q_DECLARE_PRIVATE(QTreeWidget)
0334 Q_DISABLE_COPY(QTreeWidget)
0335 };
0336
0337 inline void QTreeWidget::removeItemWidget(QTreeWidgetItem *item, int column)
0338 { setItemWidget(item, column, nullptr); }
0339
0340 inline QTreeWidgetItem *QTreeWidget::itemAt(int ax, int ay) const
0341 { return itemAt(QPoint(ax, ay)); }
0342
0343 inline void QTreeWidget::setHeaderLabel(const QString &alabel)
0344 { setHeaderLabels(QStringList(alabel)); }
0345
0346 inline void QTreeWidgetItem::setDisabled(bool disabled)
0347 { setFlags(disabled ? (flags() & ~Qt::ItemIsEnabled) : flags() | Qt::ItemIsEnabled); }
0348
0349 inline bool QTreeWidgetItem::isDisabled() const
0350 { return !(flags() & Qt::ItemIsEnabled); }
0351
0352 QT_END_NAMESPACE
0353
0354 #endif