![]() |
Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
|
\inmodule QtCore More...
#include <qrangemodel.h>
Classes | |
| class | RowOptions |
| \inmodule QtCore More... | |
| class | ItemAccess |
| \inmodule QtCore More... | |
| struct | RowOptions< Entry > |
| [vector_of_multirole_objects_0] More... | |
| struct | RowOptions< ColorEntry > |
| [color_gadget_row_options_decl] More... | |
| struct | ItemAccess< ColorEntry > |
| [color_gadget_row_options_end_decl] [color_gadget_row_options] More... | |
| struct | RowOptions< Book > |
Public Types | |
| enum class | AutoConnectPolicy { None , Full , OnRead } |
| enum class | RowCategory { Default , MultiRoleItem } |
| This enum describes how QRangeModel should present the elements of the range it was constructed with. More... | |
| enum class | DropOperation { DontDrop , Automatic , OverwriteAndIgnore , OverwriteAndExtend , InsertAsSiblings , InsertAsChildren } |
| Public Types inherited from QAbstractItemModel | |
| enum | LayoutChangeHint { NoLayoutChangeHint , VerticalSortHint , HorizontalSortHint } |
| This enum describes the way the model changes layout. More... | |
| enum class | CheckIndexOption { NoOption = 0x0000 , IndexIsValid = 0x0001 , DoNotUseParent = 0x0002 , ParentIsInvalid = 0x0004 } |
Signals | |
| void | roleNamesChanged () |
| Q_REVISION (6, 11) void autoConnectPolicyChanged(AutoConnectPolicy policy) | |
| Q_REVISION (6, 12) void sortRoleChanged(int role) | |
| Q_REVISION (6, 12) void sortCollatorChanged(const QCollator &collator) | |
| void | dataChanged (const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList< int > &roles=QList< int >()) |
| This signal is emitted whenever the data in an existing item changes. | |
| void | headerDataChanged (Qt::Orientation orientation, int first, int last) |
| This signal is emitted whenever a header is changed. | |
| void | layoutChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint) |
| void | layoutAboutToBeChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint) |
| void | rowsAboutToBeInserted (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted just before rows are inserted into the model. | |
| void | rowsInserted (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted after rows have been inserted into the model. | |
| void | rowsAboutToBeRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted just before rows are removed from the model. | |
| void | rowsRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted after rows have been removed from the model. | |
| void | columnsAboutToBeInserted (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted just before columns are inserted into the model. | |
| void | columnsInserted (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted after columns have been inserted into the model. | |
| void | columnsAboutToBeRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted just before columns are removed from the model. | |
| void | columnsRemoved (const QModelIndex &parent, int first, int last, QPrivateSignal) |
| This signal is emitted after columns have been removed from the model. | |
| void | modelAboutToBeReset (QPrivateSignal) |
| void | modelReset (QPrivateSignal) |
| void | rowsAboutToBeMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow, QPrivateSignal) |
| void | rowsMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow, QPrivateSignal) |
| void | columnsAboutToBeMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn, QPrivateSignal) |
| void | columnsMoved (const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn, QPrivateSignal) |
| Signals inherited from QObject | |
| void | destroyed (QObject *=nullptr) |
| This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
| void | objectNameChanged (const QString &objectName, QPrivateSignal) |
| This signal is emitted after the object's name has been changed. | |
Public Member Functions | |
| Q_ENUM (DropOperation) | |
| template<typename Range, QRangeModelDetails::if_table_range< Range > = true> | |
| QRangeModel (Range &&range, QObject *parent=nullptr) | |
| template<typename Range, QRangeModelDetails::if_tree_range< Range > = true> | |
| QRangeModel (Range &&range, QObject *parent=nullptr) | |
| template<typename Range, typename Protocol, QRangeModelDetails::if_tree_range< Range, Protocol > = true> | |
| QRangeModel (Range &&range, Protocol &&protocol, QObject *parent=nullptr) | |
| ~QRangeModel () override | |
| Destroys the QRangeModel. | |
| QModelIndex | index (int row, int column, const QModelIndex &parent={}) const final |
| \reimp | |
| QModelIndex | parent (const QModelIndex &child) const final |
| \reimp | |
| QModelIndex | sibling (int row, int column, const QModelIndex &index) const final |
| \reimp | |
| int | rowCount (const QModelIndex &parent={}) const final |
| \reimp | |
| int | columnCount (const QModelIndex &parent={}) const final |
| \reimp | |
| Qt::ItemFlags | flags (const QModelIndex &index) const override |
| \reimp | |
| QVariant | headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override |
| \reimp | |
| bool | setHeaderData (int section, Qt::Orientation orientation, const QVariant &data, int role=Qt::EditRole) override |
| \reimp | |
| QVariant | data (const QModelIndex &index, int role=Qt::DisplayRole) const override |
| \reimp | |
| bool | setData (const QModelIndex &index, const QVariant &data, int role=Qt::EditRole) override |
| QMap< int, QVariant > | itemData (const QModelIndex &index) const override |
| \reimp | |
| bool | setItemData (const QModelIndex &index, const QMap< int, QVariant > &data) override |
| \reimp | |
| bool | clearItemData (const QModelIndex &index) override |
| \reimp | |
| bool | insertColumns (int column, int count, const QModelIndex &parent={}) final |
| \reimp | |
| bool | removeColumns (int column, int count, const QModelIndex &parent={}) final |
| \reimp | |
| bool | moveColumns (const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destParent, int destColumn) final |
| \reimp | |
| bool | insertRows (int row, int count, const QModelIndex &parent={}) final |
| \reimp | |
| bool | removeRows (int row, int count, const QModelIndex &parent={}) final |
| \reimp | |
| bool | moveRows (const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destParent, int destRow) final |
| \reimp | |
| QHash< int, QByteArray > | roleNames () const override |
| \reimp | |
| void | setRoleNames (const QHash< int, QByteArray > &names) |
| void | resetRoleNames () |
| bool | canFetchMore (const QModelIndex &parent) const override |
| \reimp | |
| void | fetchMore (const QModelIndex &parent) override |
| \reimp | |
| bool | hasChildren (const QModelIndex &parent=QModelIndex()) const final |
| \reimp | |
| QModelIndex | buddy (const QModelIndex &index) const override |
| \reimp | |
| bool | canDropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override |
| \reimp | |
| bool | dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
| \reimp | |
| QMimeData * | mimeData (const QModelIndexList &indexes) const override |
| \reimp | |
| QStringList | mimeTypes () const override |
| \reimp | |
| QModelIndexList | match (const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const override |
| \reimp | |
| void | multiData (const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const override |
| \reimp | |
| void | sort (int column, Qt::SortOrder order=Qt::AscendingOrder) override |
| \reimp | |
| QCollator | sortCollator () const |
| void | setSortCollator (const QCollator &collator) |
| void | resetSortCollator () |
| int | sortRole () const |
| void | setSortRole (int role) |
| void | resetSortRole () |
| QSize | span (const QModelIndex &index) const override |
| \reimp | |
| Qt::DropActions | supportedDragActions () const override |
| Returns the actions supported by the data in this model. | |
| void | setSupportedDragActions (Qt::DropActions actions) |
| void | resetSupportedDragActions () |
| Qt::DropActions | supportedDropActions () const override |
| void | setSupportedDropActions (Qt::DropActions actions) |
| void | resetSupportedDropActions () |
| AutoConnectPolicy | autoConnectPolicy () const |
| void | setAutoConnectPolicy (AutoConnectPolicy policy) |
| Public Member Functions inherited from QAbstractItemModel | |
| Q_INVOKABLE | Q_REVISION (6, 4) virtual bool insertRows(int row |
| Q_INVOKABLE | Q_REVISION (6, 4) virtual bool insertColumns(int column |
| Q_INVOKABLE | Q_REVISION (6, 4) virtual bool removeRows(int row |
| Q_INVOKABLE | Q_REVISION (6, 4) virtual bool removeColumns(int column |
| Q_INVOKABLE | Q_REVISION (6, 4) virtual bool moveRows(const QModelIndex &sourceParent |
| Q_INVOKABLE | Q_REVISION (6, 4) virtual bool moveColumns(const QModelIndex &sourceParent |
| Q_INVOKABLE | Q_REVISION (6, 4) inline bool insertRow(int row |
| Q_INVOKABLE | Q_REVISION (6, 4) inline bool insertColumn(int column |
| Q_INVOKABLE | Q_REVISION (6, 4) inline bool removeRow(int row |
| Q_INVOKABLE | Q_REVISION (6, 4) inline bool removeColumn(int column |
| Q_INVOKABLE | Q_REVISION (6, 4) inline bool moveRow(const QModelIndex &sourceParent |
| Q_INVOKABLE | Q_REVISION (6, 4) inline bool moveColumn(const QModelIndex &sourceParent |
| Q_INVOKABLE | Q_REVISION (6, 4) virtual void sort(int column |
| QObject * | parent () const |
| Returns a pointer to the parent object. | |
| QAbstractItemModel (QObject *parent=nullptr) | |
| Constructs an abstract item model with the given parent. | |
| virtual | ~QAbstractItemModel () |
| Destroys the abstract item model. | |
| Q_INVOKABLE bool | hasIndex (int row, int column, const QModelIndex &parent=QModelIndex()) const |
Returns {true} if the model returns a valid QModelIndex for row and column with parent, otherwise returns {false}. | |
| bool | checkIndex (const QModelIndex &index, CheckIndexOptions options=CheckIndexOption::NoOption) const |
| Public Member Functions inherited from QObject | |
| Q_INVOKABLE | QObject (QObject *parent=nullptr) |
| Constructs an object with parent object parent. | |
| virtual | ~QObject () |
| Destroys the object, deleting all its child objects. | |
| QString | objectName () const |
| Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
| Sets the object's name to name. | |
| void | setObjectName (QAnyStringView name) |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| QBindable< QString > | bindableObjectName () |
| bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false. | |
| bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false. | |
| bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false. | |
| bool | isQmlExposed () const noexcept |
| Returns whether the object has been created by the QML engine or ownership has been explicitly set via QJSEngine::setObjectOwnership(). | |
| bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false. | |
| bool | blockSignals (bool b) noexcept |
| If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
| QThread * | thread () const |
| Returns the thread in which the object lives. | |
| bool | moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL) |
Changes the thread affinity for this object and its children and returns true on success. | |
| int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
| This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
| int | startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
| void | killTimer (int id) |
| Kills the timer with timer identifier, id. | |
| void | killTimer (Qt::TimerId id) |
| template<typename T> | |
| T | findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
| Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
| template<typename T> | |
| QList< T > | findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
| Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
| template<typename T> | |
| T | findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| template<typename T> | |
| QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
| const QObjectList & | children () const |
| Returns a list of child objects. | |
| void | setParent (QObject *parent) |
| Makes the object a child of parent. | |
| void | installEventFilter (QObject *filterObj) |
| Installs an event filter filterObj on this object. | |
| void | removeEventFilter (QObject *obj) |
| Removes an event filter object obj from this object. | |
| QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
| bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
| bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
| void | dumpObjectTree () const |
| Dumps a tree of children to the debug output. | |
| void | dumpObjectInfo () const |
| Dumps information about signal connections, etc. | |
| bool | setProperty (const char *name, const QVariant &value) |
| Sets the value of the object's name property to value. | |
| bool | setProperty (const char *name, QVariant &&value) |
| QVariant | property (const char *name) const |
| Returns the value of the object's name property. | |
| QList< QByteArray > | dynamicPropertyNames () const |
| QBindingStorage * | bindingStorage () |
| const QBindingStorage * | bindingStorage () const |
| QObject * | parent () const |
| Returns a pointer to the parent object. | |
| bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. | |
Protected Slots | |
| void | resetInternalData () override |
| \reimp | |
| virtual void | resetInternalData () |
Protected Member Functions | |
| bool | event (QEvent *) override |
| \reimp | |
| bool | eventFilter (QObject *, QEvent *) override |
| \reimp | |
| QAbstractItemModel (QAbstractItemModelPrivate &dd, QObject *parent=nullptr) | |
| QModelIndex | createIndex (int row, int column, const void *data=nullptr) const |
| Creates a model index for the given row and column with the internal pointer ptr. | |
| QModelIndex | createIndex (int row, int column, quintptr id) const |
| Creates a model index for the given row and column with the internal identifier, id. | |
| void | encodeData (const QModelIndexList &indexes, QDataStream &stream) const |
| bool | decodeData (int row, int column, const QModelIndex &parent, QDataStream &stream) |
| void | beginInsertRows (const QModelIndex &parent, int first, int last) |
| Begins a row insertion operation. | |
| void | endInsertRows () |
| Ends a row insertion operation. | |
| void | beginRemoveRows (const QModelIndex &parent, int first, int last) |
| Begins a row removal operation. | |
| void | endRemoveRows () |
| Ends a row removal operation. | |
| bool | beginMoveRows (const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationRow) |
| void | endMoveRows () |
| Ends a row move operation. | |
| void | beginInsertColumns (const QModelIndex &parent, int first, int last) |
| Begins a column insertion operation. | |
| void | endInsertColumns () |
| Ends a column insertion operation. | |
| void | beginRemoveColumns (const QModelIndex &parent, int first, int last) |
| Begins a column removal operation. | |
| void | endRemoveColumns () |
| Ends a column removal operation. | |
| bool | beginMoveColumns (const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationColumn) |
| Begins a column move operation. | |
| void | endMoveColumns () |
| Ends a column move operation. | |
| void | beginResetModel () |
| Begins a model reset operation. | |
| void | endResetModel () |
| Completes a model reset operation. | |
| void | changePersistentIndex (const QModelIndex &from, const QModelIndex &to) |
| Changes the QPersistentModelIndex that is equal to the given from model index to the given to model index. | |
| void | changePersistentIndexList (const QModelIndexList &from, const QModelIndexList &to) |
| QModelIndexList | persistentIndexList () const |
| Protected Member Functions inherited from QObject | |
| QObject * | sender () const |
| Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
| int | senderSignalIndex () const |
| int | receivers (const char *signal) const |
| Returns the number of receivers connected to the signal. | |
| bool | isSignalConnected (const QMetaMethod &signal) const |
| virtual void | timerEvent (QTimerEvent *event) |
| This event handler can be reimplemented in a subclass to receive timer events for the object. | |
| virtual void | childEvent (QChildEvent *event) |
| This event handler can be reimplemented in a subclass to receive child events. | |
| virtual void | customEvent (QEvent *event) |
| This event handler can be reimplemented in a subclass to receive custom events. | |
| virtual void | connectNotify (const QMetaMethod &signal) |
| virtual void | disconnectNotify (const QMetaMethod &signal) |
| QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
Properties | |
| QHash< int, QByteArray > | roleNames |
| the role names for the model. | |
| AutoConnectPolicy | autoConnectPolicy |
| if and when the model auto-connects to property changed notifications. | |
| int | sortRole |
| the data role used when sorting items. | |
| QCollator | sortCollator |
| the collator that will be used when sorting the model | |
| Qt::DropActions | supportedDropActions |
| the drop-actions supported by this model. | |
| Qt::DropActions | supportedDragActions |
| the drag-actions supported by this model. | |
| Properties inherited from QObject | |
| QString | objectName |
| the name of this object | |
Friends | |
| class | QRangeModelImplBase |
Additional Inherited Members | |
| virtual bool | submit () |
| Lets the model know that it should submit cached information to permanent storage. | |
| virtual void | revert () |
| Lets the model know that it should discard cached information. | |
| Public Slots inherited from QObject | |
| void | deleteLater () |
| \threadsafe | |
| Static Public Member Functions inherited from QObject | |
| static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
| \threadsafe | |
| static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
| template<typename Func1, typename Func2> | |
| static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
| template<typename Func1, typename Func2> | |
| static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
| static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
| \threadsafe | |
| static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
| static bool | disconnect (const QMetaObject::Connection &) |
| Disconnects connection and resets it to \l{QMetaObject::Connection::operator bool()}{invalid}. | |
| static bool | disconnect (QMetaObject::Connection &) |
| static bool | disconnect (QMetaObject::Connection &&conn) |
| Disconnect a connection. | |
| template<typename Func1, typename Func2> | |
| static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
| template<typename Func1> | |
| static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
| Public Attributes inherited from QAbstractItemModel | |
| Q_INVOKABLE int | count |
| Q_INVOKABLE int | sourceRow |
| Q_INVOKABLE int int | count |
| Q_INVOKABLE int int const QModelIndex & | destinationParent |
| Q_INVOKABLE int int const QModelIndex int | destinationChild |
| Q_INVOKABLE int | sourceColumn |
| Q_INVOKABLE const QModelIndex & | parent = QModelIndex()) |
| Q_INVOKABLE int const QModelIndex & | destinationParent |
| Q_INVOKABLE int const QModelIndex int | destinationChild |
| Q_INVOKABLE Qt::SortOrder | order = Qt::AscendingOrder) |
| Q_INVOKABLE int const QModelIndex & | parent = QModelIndex()) |
| Returns the parent of the model item with the given index. | |
| static Qt::weak_ordering | compareData (const QVariant &lhs, const QVariant &rhs, const QCollator *collator=nullptr) |
| Protected Attributes inherited from QObject | |
| QScopedPointer< QObjectData > | d_ptr |
| Related Symbols inherited from QObject | |
| template< class T > T | qobject_cast (const QObject *object) |
| Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
| template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
| template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
| QObjectList | |
| \macro Q_CLASSINFO(Name, Value) | |
\inmodule QtCore
QRangeModel implements QAbstractItemModel for any C++ range. \reentrant
QRangeModel can make the data in any sequentially iterable C++ type available to the \l{Model/View Programming}{model/view framework} of Qt. This makes it easy to display existing data structures in the Qt Widgets and Qt Quick item views, and to allow the user of the application to manipulate the data using a graphical user interface.
To use QRangeModel, instantiate it with a C++ range and set it as the model of one or more views:
Definition at line 15 of file qrangemodel.h.
|
strong |
This enum defines if and when QRangeModel auto-connects changed-signals for properties to the \l{QAbstractItemModel::}{dataChanged()} signal of the model. Only properties that match one of the \l{roleNames()}{role names} are connected.
\value None No connections are made automatically. \value Full The signals for all relevant properties are connected automatically, for all QObject items. This includes QObject items that are added to newly inserted rows and columns. \value OnRead Signals for relevant properties are connected the first time the model reads the property.
The memory overhead of making automatic connections can be substantial. A Full auto-connection does not require any book-keeping in addition to the connection itself, but each connection takes memory, and connecting all properties of all objects can be very costly, especially if only a few properties of a subset of objects will ever change.
The OnRead connection policy will not connect to objects or properties that are never read from (for instance, never rendered in a view), but remembering which connections have been made requires some book-keeping overhead, and unpredictable memory growth over time. For instance, scrolling down a long list of items can easily result in thousands of new connections being made.
| Enumerator | |
|---|---|
| None | |
| Full | |
| OnRead | |
Definition at line 27 of file qrangemodel.h.
|
strong |
This enum defines how data decoded in a dropMimeData() customization gets written to the model.
\value DontDrop The data should not be added to the model. \value Automatic Qt determines how data gets added to the model. \value OverwriteAndIgnore Overwrite the dropped-on item and following items, and discard any dropped data that doesn't fit. \value OverwriteAndExtend Overwrite the dropped-on item and following items, and grow the model to fit all dropped data. \value InsertAsSiblings Insert all dropped data as siblings of the dropped-on item. \value InsertAsChildren Insert all dropped data as children of the dropped-on item.
A dropMimeData() customization can return a bool value instead, in which case {false} maps to the DontDrop value, and {true} to Automatic.
| Enumerator | |
|---|---|
| DontDrop | |
| Automatic | |
| OverwriteAndIgnore | |
| OverwriteAndExtend | |
| InsertAsSiblings | |
| InsertAsChildren | |
Definition at line 39 of file qrangemodel.h.
|
strong |
This enum describes how QRangeModel should present the elements of the range it was constructed with.
\fn template <typename T> bool QRangeModel::RowOptions<T>::canDropMimeData(const QMimeData *data) \fn template <typename T> bool QRangeModel::RowOptions<T>::canDropMimeData(const QMimeData *data, Qt::DragAction action, int row, int column, const QModelIndex &parent) \since 6.12
! [specialize-canDropMimeData] Implement one of these class members to return whether data can be dropped into the model. If the simplified version is implemented, then QRangeModel will validate that action is one of the \l{QRangeModel::supportedDropActions} {supported drop actions}. In the full version the implementation can return different results based on the position of the drop as specified by row, column, and parent.
This member is optional and not required for drag'n'drop customization. The default behavior returns whether data holds one of the supported mime types. ! [specialize-canDropMimeData]
\sa QAbstractItemModel::canDropMimeData()
\fn template <typename T> auto QRangeModel::RowOptions<T>::dropMimeData(const QMimeData *data, auto inserter)
\fn template <typename T> auto QRangeModel::RowOptions<T>::dropMimeData(const QMimeData *data, Qt::DragAction action, int row, int column, const QModelIndex &parent, auto inserter)
\since 6.12
Implement one of these class members to decode the relevant entries in \a
data into a sequence of rows of type \a T, and drop these rows into the
model by assigning each to the provided \a inserter. Return whether the
operation was successful.
\snippet qrangemodel/specialize.cpp color_gadget_row_options_decl
\snippet qrangemodel/specialize.cpp color_gadget_row_options_dropMimeData
\snippet qrangemodel/specialize.cpp color_gadget_row_options_end_decl
The \a inserter behaves like a \l{https://cppreference.com/cpp/iterator/back_insert_iterator}
{std::back_insert_iterator} and can be used with e.g. \c{std::copy}. The
above snippets omits error handling, which perhaps would require storing the
decoded items in a separate list that can be discarded in case of an error.
The following would efficiently move the decoded rows into the model:
\code
static bool dropMimeData(const QMimeData *mimeData, auto inserter)
{
QList<ColorEntry> decodedEntries;
// read stream and populate decodedEntries
if (stream.hasError())
return false;
std::copy(std::move_iterator(decodedRows.begin()), std::move_iterator(decodedRows.end()),
inserter);
return true;
}
\endcode
Optionally, decoded rows can be paired with the relative row number it
should have in the inserted range of rows.
\code
int row = 0;
for (const auto &decodedRow : decodedRows) {
inserter = {decodedRow, row};
row += 2;
}
\endcode
This implementation keeps an empty row between each decoded row.
! [specialize-dropMimeData-return] Return one of the \l{QRangeModel::}{DropOperation} values to provide a hint to QRangeModel for how the dropped rows should be applied to the model. Alternatively, simply return {true} (the equivalent of \l{QRangeModel::}{DropOperation::Automatic}) or {false} (the equivalent of \l{QRangeModel::}{DropOperation::DontDrop}). ! [specialize-dropMimeData-return]
\sa QAbstractItemModel::dropMimeData()
\value Default QRangeModel decides how to present the rows. \value MultiRoleItem QRangeModel will present items with a meta object as multi-role items, also when used in a one-dimensional range.
Specialize the RowOptions template for your type, and add a public member variable {static constexpr auto rowCategory} with one of the values from this enum.
| Enumerator | |
|---|---|
| Default | |
| MultiRoleItem | |
Definition at line 34 of file qrangemodel.h.
|
inlineexplicit |
Definition at line 91 of file qrangemodel.h.
|
inlineexplicit |
Definition at line 97 of file qrangemodel.h.
|
inlineexplicit |
Definition at line 104 of file qrangemodel.h.
|
overridedefault |
Destroys the QRangeModel.
The range that the model was constructed from is not accessed, and only destroyed if the model was constructed from a moved-in range.
| QRangeModel::AutoConnectPolicy QRangeModel::autoConnectPolicy | ( | ) | const |
Definition at line 2106 of file qrangemodel.cpp.
|
overridevirtual |
|
overridevirtual |
\reimp
Reimplemented from QAbstractItemModel.
Definition at line 1791 of file qrangemodel.cpp.
|
overridevirtual |
|
overridevirtual |
\reimp
Replaces the value stored in the range at index with a default- constructed value.
read-only-setData
Reimplemented from QAbstractItemModel.
Definition at line 1605 of file qrangemodel.cpp.
|
finalvirtual |
\reimp
Returns the number of columns of the model. This function returns the same value for all parent indexes.
For models operating on a statically sized row type, this returned value is always the same throughout the lifetime of the model. For models operating on dynamically sized row type, the model returns the number of items in the first row, or 0 if the model has no rows.
Implements QAbstractItemModel.
Definition at line 1412 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Returns the data stored under the given role for the value in the range referred to by the index.
If the item type for that index is an associative container that maps from either {int}, Qt::ItemDataRole, or QString to a QVariant, then the role data is looked up in that container and returned.
If the item is a gadget or QObject, then the implementation returns the value of the item's property matching the role entry in the roleNames() mapping.
Otherwise, the implementation returns a QVariant constructed from the item via {QVariant::fromValue()} for {Qt::DisplayRole} or {Qt::EditRole}. For other roles, the implementation returns an invalid (default-constructed) QVariant.
Implements QAbstractItemModel.
Definition at line 1503 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Reimplemented from QAbstractItemModel.
Definition at line 1805 of file qrangemodel.cpp.
|
overrideprotectedvirtual |
|
overridevirtual |
|
overridevirtual |
\reimp
Returns the item flags for the given index.
The implementation returns a combination of flags that enables the item (ItemIsEnabled) and allows it to be selected (ItemIsSelectable). For models operating on a range with mutable data, it also sets the flag that allows the item to be editable (ItemIsEditable).
Models that return a non-empty list of \l{mimeTypes()}{mimeTypes()} also set the Qt::ItemIsDragEnabled, and - unless read-only - the Qt::ItemIsDropEnabled flag.
Flat models set the Qt::ItemNeverHasChildren for all items, while hierarchical models set that flag for all items in columns above 0.
To customize the flags for your own data types, provide a specialization of RowOptions and/or ItemAccess for your row or item types.
Reimplemented from QAbstractItemModel.
Definition at line 1440 of file qrangemodel.cpp.
|
finalvirtual |
|
overridevirtual |
\reimp
Returns the data for the given role and section in the header with the specified orientation.
For horizontal headers, the section number corresponds to the column number. Similarly, for vertical headers, the section number corresponds to the row number.
For the horizontal header and the Qt::DisplayRole role, models that operate on a range that uses an array as the row type return section. If the row type is a tuple, then the implementation returns the name of the type at section. For rows that are a gadget or QObject type, this function returns the name of the property at the index of section.
For the vertical header, this function always returns the result of the default implementation in QAbstractItemModel.
Reimplemented from QAbstractItemModel.
Definition at line 1467 of file qrangemodel.cpp.
|
finalvirtual |
\reimp
Returns the index of the model item at row and column in parent.
Passing a valid parent produces an invalid index for models that operate on list and table ranges.
Implements QAbstractItemModel.
Definition at line 1339 of file qrangemodel.cpp.
|
final |
\reimp
Inserts count empty columns before the item at column in all rows of the range at parent. Returns {true} if successful; otherwise returns {false}.
{column-change-requirement} {insert(const_iterator, size_t, value_type)}
Definition at line 1631 of file qrangemodel.cpp.
|
final |
\reimp
Inserts count empty rows before the given row into the range at parent. Returns {true} if successful; otherwise returns {false}.
{row-change-requirement} {insert(const_iterator, size_t, value_type)}
{resize(size_t)} member function. Definition at line 1692 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Returns a map with values for all predefined roles in the model for the item at the given index.
If the item type for that index is an associative container that maps from either {int}, Qt::ItemDataRole, or QString to a QVariant, then the data from that container is returned.
If the item type is a gadget or QObject subclass, then the values of those properties that match a \l{roleNames()}{role name} are returned.
If the item is not an associative container, gadget, or QObject subclass, then this calls the base class implementation.
Reimplemented from QAbstractItemModel.
Definition at line 1559 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Returns a list of indexes for the items in the column of start where the data stored under role matches value, using the match criteria defined by flags. Use hits = -1 to find all matching items.
Reimplemented from QAbstractItemModel.
Definition at line 1951 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Reimplemented from QAbstractItemModel.
Definition at line 1894 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Reimplemented from QAbstractItemModel.
Definition at line 1930 of file qrangemodel.cpp.
|
final |
\reimp
Moves count columns starting with the given sourceColumn under parent sourceParent to column destinationColumn under parent destinationParent.
Returns {true} if the columns were successfully moved; otherwise returns {false}.
Definition at line 1661 of file qrangemodel.cpp.
|
final |
\reimp
Moves count rows starting with the given sourceRow under parent sourceParent to row destinationRow under parent destinationParent.
Returns {true} if the rows were successfully moved; otherwise returns {false}.
Definition at line 1721 of file qrangemodel.cpp.
|
overridevirtual |
|
finalvirtual |
\reimp
Returns the parent of the item at the child index.
This function always produces an invalid index for models that operate on list and table ranges. For models operation on a tree, this function returns the index for the row item returned by the parent() implementation of the tree traversal protocol.
Implements QAbstractItemModel.
Definition at line 1357 of file qrangemodel.cpp.
| QRangeModel::Q_ENUM | ( | DropOperation | ) |
|
signal |
|
signal |
|
signal |
|
final |
\reimp
Removes count columns from the item at column on in all rows of the range at parent. Returns {true} if successful, otherwise returns {false}.
{column-change-requirement} {erase(const_iterator, size_t)}
Definition at line 1646 of file qrangemodel.cpp.
|
final |
\reimp
Removes count rows from the range at parent, starting with the given row. Returns {true} if successful, otherwise returns {false}.
{row-change-requirement} {erase(const_iterator, size_t)}
Definition at line 1706 of file qrangemodel.cpp.
|
overrideprotectedslot |
\reimp
Definition at line 2294 of file qrangemodel.cpp.
| void QRangeModel::resetRoleNames | ( | ) |
Definition at line 2048 of file qrangemodel.cpp.
| void QRangeModel::resetSortCollator | ( | ) |
Definition at line 2207 of file qrangemodel.cpp.
| void QRangeModel::resetSortRole | ( | ) |
Definition at line 2176 of file qrangemodel.cpp.
| void QRangeModel::resetSupportedDragActions | ( | ) |
Definition at line 2253 of file qrangemodel.cpp.
| void QRangeModel::resetSupportedDropActions | ( | ) |
Definition at line 2286 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Reimplemented from QAbstractItemModel.
Definition at line 2024 of file qrangemodel.cpp.
|
signal |
|
finalvirtual |
\reimp
Returns the number of rows under the given parent. This is the number of items in the root range for an invalid parent index.
If the parent index is valid, then this function always returns 0 for models that operate on list and table ranges. For trees, this returns the size of the range returned by the childRows() implementation of the tree traversal protocol.
Implements QAbstractItemModel.
Definition at line 1393 of file qrangemodel.cpp.
| void QRangeModel::setAutoConnectPolicy | ( | QRangeModel::AutoConnectPolicy | policy | ) |
Definition at line 2112 of file qrangemodel.cpp.
|
overridevirtual |
\reimp
Sets the \a role data for the item at \a index to \a data.
If the item type for that \a index is an associative container that maps
from either \c{int}, Qt::ItemDataRole, or QString to a QVariant, then
\a data is stored in that container for the key specified by \a role.
If the item is a gadget or QObject, then \a data is written to the item's
property matching the \a role entry in the the roleNames() mapping. The
function returns \c{true} if a property was found and if \a data stored a
value that could be converted to the required type, otherwise returns
\c{false}.
Otherwise, this implementation assigns the value in \a data to the item at
the \a index in the range for \c{Qt::DisplayRole} and \c{Qt::EditRole},
and returns \c{true}. For other roles, the implementation returns
\c{false}.
! [read-only-setData] For models operating on a read-only range, or on a read-only column in a row type that implements \l{the C++ tuple protocol}, this implementation returns {false} immediately. ! [read-only-setData]
Reimplemented from QAbstractItemModel.
Definition at line 1535 of file qrangemodel.cpp.
|
overridevirtual |
|
overridevirtual |
\reimp
If the item type for that index is an associative container that maps from either {int} or Qt::ItemDataRole to a QVariant, then the entries in data are stored in that container. If the associative container maps from QString to QVariant, then only those values in data are stored for which there is a mapping in the \l{roleNames()}{role names} table.
If the item type is a gadget or QObject subclass, then those properties that match a \l{roleNames()}{role name} are set to the corresponding value in data.
Roles for which there is no entry in data are not modified.
For item types that can be copied, this implementation is transactional, and returns true if all the entries from data could be stored. If any entry could not be updated, then the original container is not modified at all, and the function returns false.
If the item is not an associative container, gadget, or QObject subclass, then this calls the base class implementation, which calls setData() for each entry in data.
Reimplemented from QAbstractItemModel.
Definition at line 1591 of file qrangemodel.cpp.
| void QRangeModel::setRoleNames | ( | const QHash< int, QByteArray > & | names | ) |
Definition at line 2033 of file qrangemodel.cpp.
Definition at line 2198 of file qrangemodel.cpp.
| void QRangeModel::setSortRole | ( | int | role | ) |
Definition at line 2167 of file qrangemodel.cpp.
| void QRangeModel::setSupportedDragActions | ( | Qt::DropActions | actions | ) |
Definition at line 2243 of file qrangemodel.cpp.
| void QRangeModel::setSupportedDropActions | ( | Qt::DropActions | actions | ) |
Definition at line 2276 of file qrangemodel.cpp.
|
finalvirtual |
\reimp
Returns the sibling at row and column for the item at index, or an invalid QModelIndex if there is no sibling at that location.
This implementation is significantly faster than going through the parent() of the index.
Reimplemented from QAbstractItemModel.
Definition at line 1374 of file qrangemodel.cpp.
|
override |
\reimp
Sorts the the underlying range in the given order, based on the data for the \l{sortRole} (Qt::DisplayRole by default) of the items in column.
{sort(Compare comp)} of the C++ range if available (such as in {std::list}), or otherwise {std::stable_sort()} if the range provides random-access iterators. If neither is available then the implementation does nothing and returns immediately.Definition at line 2140 of file qrangemodel.cpp.
| QCollator QRangeModel::sortCollator | ( | ) | const |
Definition at line 2192 of file qrangemodel.cpp.
| int QRangeModel::sortRole | ( | ) | const |
Definition at line 2161 of file qrangemodel.cpp.
|
overridevirtual |
|
overridevirtual |
Returns the actions supported by the data in this model.
The default implementation returns supportedDropActions(). Reimplement this function if you wish to support additional actions.
supportedDragActions() is used by QAbstractItemView::startDrag() as the default values when a drag occurs.
Reimplemented from QAbstractItemModel.
Definition at line 2237 of file qrangemodel.cpp.
|
overridevirtual |
Returns the drop actions supported by this model.
The default implementation returns Qt::CopyAction. Reimplement this function if you wish to support additional actions. You must also reimplement the dropMimeData() function to handle the additional operations.
Reimplemented from QAbstractItemModel.
Definition at line 2270 of file qrangemodel.cpp.
|
friend |
Definition at line 197 of file qrangemodel.h.
|
readwrite |
if and when the model auto-connects to property changed notifications.
If QRangeModel operates on a data structure that holds the same type of QObject subclass as its row or item type, then it can automatically connect the properties of the QObjects to the dataChanged() signal. For QObject rows, this is done for each column, mapping to the Qt::DisplayRole property. For items, this is done for those properties that match one of the \l{roleNames()}{role names}.
By default, the value of this property is \l{QRangeModel::AutoConnectPolicy::} {None}, so no such connections are made. Changing the value of this property always breaks all existing connections.
Definition at line 19 of file qrangemodel.h.
|
readwrite |
the role names for the model.
If all columns in the range are of the same type, and if that type provides a meta object (i.e., it is a gadget, or a QObject subclass), then this property holds the names of the properties of that type, mapped to values of Qt::ItemDataRole values from Qt::UserRole and up. In addition, a role "modelData" provides access to the gadget or QObject instance.
Override this default behavior by setting this property explicitly to a non- empty mapping. Setting this property to an empty mapping, or using resetRoleNames(), restores the default behavior.
Definition at line 18 of file qrangemodel.h.
|
readwrite |
the collator that will be used when sorting the model
The default value of this property is a QCollator for the C-locale. Sorting will not be locale aware, and case sensitive. Setting a collator will make the sorting locale-aware.
Definition at line 21 of file qrangemodel.h.
|
readwrite |
the data role used when sorting items.
The default value is Qt::DisplayRole.
Definition at line 20 of file qrangemodel.h.
|
readwrite |
the drag-actions supported by this model.
Actions that the model cannot support, such as moving data out of a read-only model, will be removed when setting the actions.
Definition at line 23 of file qrangemodel.h.
|
readwrite |
the drop-actions supported by this model.
Read-only models cannot support any drop-actions.
Definition at line 22 of file qrangemodel.h.