18 Q_PROPERTY(QHash<
int, QByteArray> roleNames READ roleNames WRITE setRoleNames RESET resetRoleNames
19 NOTIFY roleNamesChanged FINAL)
20 Q_PROPERTY(AutoConnectPolicy autoConnectPolicy READ autoConnectPolicy WRITE setAutoConnectPolicy
21 NOTIFY autoConnectPolicyChanged REVISION(6, 11))
22 Q_PROPERTY(
int sortRole READ sortRole WRITE setSortRole RESET resetSortRole
23 NOTIFY sortRoleChanged REVISION(6, 12))
24 Q_PROPERTY(QCollator sortCollator READ sortCollator WRITE setSortCollator
25 RESET resetSortCollator NOTIFY sortCollatorChanged REVISION(6, 12))
26 Q_PROPERTY(Qt::DropActions supportedDropActions READ supportedDropActions
27 WRITE setSupportedDropActions
28 RESET resetSupportedDropActions
29 NOTIFY supportedDropActionsChanged REVISION(6, 12))
30 Q_PROPERTY(Qt::DropActions supportedDragActions READ supportedDragActions
31 WRITE setSupportedDragActions
32 RESET resetSupportedDragActions
33 NOTIFY supportedDragActionsChanged REVISION(6, 12))
34 Q_CLASSINFO(
"RegisterEnumClassesUnscoped",
"false")
37 enum class AutoConnectPolicy {
42 Q_ENUM(AutoConnectPolicy)
44 enum class RowCategory {
49 enum class DropOperation {
57 Q_ENUM(DropOperation);
62 static constexpr RowCategory rowCategory;
63 static QVariant headerData(
int section,
int role);
64 static Qt::ItemFlags flags(
const T &row);
66 static QStringList mimeTypes();
67 static QMimeData *mimeData(
const auto &range);
68 static QMimeData *mimeData(
const QModelIndex &range);
69 static bool canDropMimeData(
const QMimeData *mimeData);
70 static bool canDropMimeData(
const QMimeData *mimeData, Qt::DragAction action,
71 int row,
int column,
const QModelIndex &parent);
72 static auto dropMimeData(
const QMimeData *mimeData,
auto inserter);
73 static auto dropMimeData(
const QMimeData *mimeData, Qt::DragAction action,
74 int row,
int column,
const QModelIndex &parent,
82 static QVariant readRole(
const T &item,
int role);
83 static bool writeRole(T &item,
const QVariant &value,
int role);
84 static Qt::ItemFlags flags(
const T &item);
86 static QStringList mimeTypes();
87 static QMimeData *mimeData(
const auto &range);
88 static QMimeData *mimeData(
const QModelIndex &range);
89 static bool canDropMimeData(
const QMimeData *mimeData);
90 static bool canDropMimeData(
const QMimeData *mimeData, Qt::DragAction action,
91 int row,
int column,
const QModelIndex &parent);
92 static auto dropMimeData(
const QMimeData *mimeData,
auto inserter);
93 static auto dropMimeData(
const QMimeData *mimeData, Qt::DragAction action,
94 int row,
int column,
const QModelIndex &parent,
99 template <
typename Range,
100 QRangeModelDetails::if_table_range<Range> =
true>
101 explicit QRangeModel(Range &&range, QObject *parent =
nullptr)
102 : QRangeModel(
new QGenericTableItemModelImpl<Range>(std::forward<Range>(range),
this), parent)
105 template <
typename Range,
106 QRangeModelDetails::if_tree_range<Range> =
true>
107 explicit QRangeModel(Range &&range, QObject *parent =
nullptr)
108 : QRangeModel(std::forward<Range>(range), QRangeModelDetails::DefaultTreeProtocol<Range>{},
112 template <
typename Range,
typename Protocol,
113 QRangeModelDetails::if_tree_range<Range, Protocol> =
true>
114 explicit QRangeModel(Range &&range, Protocol &&protocol, QObject *parent =
nullptr)
115 : QRangeModel(
new QGenericTreeItemModelImpl<Range, Protocol>(std::forward<Range>(range),
116 std::forward<Protocol>(protocol),
121 ~QRangeModel() override;
123 QModelIndex index(
int row,
int column,
const QModelIndex &parent = {})
const final;
124 QModelIndex parent(
const QModelIndex &child)
const final;
125 QModelIndex sibling(
int row,
int column,
const QModelIndex &index)
const final;
126 int rowCount(
const QModelIndex &parent = {})
const final;
127 int columnCount(
const QModelIndex &parent = {})
const final;
128 Qt::ItemFlags flags(
const QModelIndex &index)
const override;
129 QVariant headerData(
int section, Qt::Orientation orientation,
130 int role = Qt::DisplayRole)
const override;
131 bool setHeaderData(
int section, Qt::Orientation orientation,
const QVariant &data,
132 int role = Qt::EditRole) override;
133 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole)
const override;
134 bool setData(
const QModelIndex &index,
const QVariant &data,
int role = Qt::EditRole) override;
135 QMap<
int, QVariant> itemData(
const QModelIndex &index)
const override;
136 bool setItemData(
const QModelIndex &index,
const QMap<
int, QVariant> &data) override;
137 bool clearItemData(
const QModelIndex &index) override;
138 bool insertColumns(
int column,
int count,
const QModelIndex &parent = {}) final;
139 bool removeColumns(
int column,
int count,
const QModelIndex &parent = {}) final;
140 bool moveColumns(
const QModelIndex &sourceParent,
int sourceColumn,
int count,
141 const QModelIndex &destParent,
int destColumn) final;
142 bool insertRows(
int row,
int count,
const QModelIndex &parent = {}) final;
143 bool removeRows(
int row,
int count,
const QModelIndex &parent = {}) final;
144 bool moveRows(
const QModelIndex &sourceParent,
int sourceRow,
int count,
145 const QModelIndex &destParent,
int destRow) final;
147 QHash<
int, QByteArray> roleNames()
const override;
148 void setRoleNames(
const QHash<
int, QByteArray> &names);
149 void resetRoleNames();
151 bool canFetchMore(
const QModelIndex &parent)
const override;
152 void fetchMore(
const QModelIndex &parent) override;
154 bool hasChildren(
const QModelIndex &parent = QModelIndex())
const final;
155 QModelIndex buddy(
const QModelIndex &index)
const override;
156 bool canDropMimeData(
const QMimeData *data, Qt::DropAction action,
int row,
int column,
157 const QModelIndex &parent)
const override;
158 bool dropMimeData(
const QMimeData *data, Qt::DropAction action,
int row,
int column,
159 const QModelIndex &parent) override;
160 QMimeData *mimeData(
const QModelIndexList &indexes)
const override;
161 QStringList mimeTypes()
const override;
162 QModelIndexList match(
const QModelIndex &start,
int role,
const QVariant &value,
int hits,
163 Qt::MatchFlags flags)
const override;
164 void multiData(
const QModelIndex &index, QModelRoleDataSpan roleDataSpan)
const override;
165 void sort(
int column, Qt::SortOrder order = Qt::AscendingOrder) override;
167 QCollator sortCollator()
const;
168 void setSortCollator(
const QCollator &collator);
169 void resetSortCollator();
171 int sortRole()
const;
172 void setSortRole(
int role);
173 void resetSortRole();
175 QSize span(
const QModelIndex &index)
const override;
177 Qt::DropActions supportedDragActions()
const override;
178 void setSupportedDragActions(Qt::DropActions actions);
179 void resetSupportedDragActions();
180 Qt::DropActions supportedDropActions()
const override;
181 void setSupportedDropActions(Qt::DropActions actions);
182 void resetSupportedDropActions();
184 AutoConnectPolicy autoConnectPolicy()
const;
185 void setAutoConnectPolicy(AutoConnectPolicy policy);
188 void roleNamesChanged();
189 Q_REVISION(6, 11)
void autoConnectPolicyChanged(AutoConnectPolicy policy);
190 Q_REVISION(6, 12)
void sortRoleChanged(
int role);
191 Q_REVISION(6, 12)
void sortCollatorChanged(
const QCollator &collator);
192 Q_REVISION(6, 12)
void supportedDragActionsChanged(Qt::DropActions actions);
193 Q_REVISION(6, 12)
void supportedDropActionsChanged(Qt::DropActions actions);
196 void resetInternalData() override;
199 bool event(QEvent *) override;
200 bool eventFilter(QObject *, QEvent *) override;
203 Q_DISABLE_COPY_MOVE(QRangeModel)
204 Q_DECLARE_PRIVATE(QRangeModel)
206 explicit QRangeModel(QRangeModelImplBase *impl, QObject *parent);
207 friend class QRangeModelImplBase;