diff options
Diffstat (limited to 'src/corelib/doc/snippets')
-rw-r--r-- | src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp index 2e055ec439..397f6f72af 100644 --- a/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp @@ -141,3 +141,48 @@ private: }; //! [12] +//! [13] +QVariant text = model->data(index, Qt::DisplayRole); +QVariant decoration = model->data(index, Qt::DecorationRole); +QVariant checkState = model->data(index, Qt::CheckStateRole); +// etc. +//! [13] + +//! [14] +std::array<QModelRoleData, 3> roleData = { { + QModelRoleData(Qt::DisplayRole), + QModelRoleData(Qt::DecorationRole), + QModelRoleData(Qt::CheckStateRole) +} }; + +// Usually, this is not necessary: A QModelRoleDataSpan +// will be built automatically for you when passing an array-like +// container to multiData(). +QModelRoleDataSpan span(roleData); + +model->multiData(index, span); + +// Use roleData[0].data(), roleData[1].data(), etc. +//! [14] + +//! [15] +void MyModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const +{ + for (QModelRoleData &roleData : roleDataSpan) { + int role = roleData.role(); + + // ... obtain the data for index and role ... + + roleData.setData(result); + } +} +//! [15] + +//! [16] +QVariant MyModel::data(const QModelIndex &index, int role) const +{ + QModelRoleData roleData(role); + multiData(index, roleData); + return roleData.data(); +} +//! [16] |