diff options
Diffstat (limited to 'tests/auto/quick/qquicktableview/testmodel.h')
-rw-r--r-- | tests/auto/quick/qquicktableview/testmodel.h | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/tests/auto/quick/qquicktableview/testmodel.h b/tests/auto/quick/qquicktableview/testmodel.h index 02a3478bdd..21ed7e03a5 100644 --- a/tests/auto/quick/qquicktableview/testmodel.h +++ b/tests/auto/quick/qquicktableview/testmodel.h @@ -1,5 +1,5 @@ // Copyright (C) 2018 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtCore/QtCore> #include <QtGui/QStandardItemModel> @@ -36,13 +36,27 @@ public: QVariant data(const QModelIndex &index, int role) const override { - if (!index.isValid() || role != Qt::DisplayRole) + if (!index.isValid()) return QVariant(); - int serializedIndex = index.row() + (index.column() * m_columns); - if (modelData.contains(serializedIndex)) - return modelData.value(serializedIndex); - return QStringLiteral("%1").arg(index.row()); + QVariant ret; + + switch (role) { + case Qt::UserRole: + ret = 42; + break; + case Qt::DisplayRole: { + int serializedIndex = index.row() + (index.column() * m_columns); + if (modelData.contains(serializedIndex)) + ret = modelData.value(serializedIndex); + else + ret = QStringLiteral("%1").arg(index.row()); } + break; + default: + break; + } + + return ret; } Q_INVOKABLE QVariant dataFromSerializedIndex(int index) const @@ -54,9 +68,18 @@ public: QHash<int, QByteArray> roleNames() const override { + if (m_useCustomRoleNames) + return { { Qt::UserRole, "custom"} }; return { {Qt::DisplayRole, "display"} }; } + Q_INVOKABLE void useCustomRoleNames(bool use) + { + beginResetModel(); + m_useCustomRoleNames = use; + endResetModel(); + } + Q_INVOKABLE void setModelData(const QPoint &cell, const QSize &span, const QString &string) { for (int c = 0; c < span.width(); ++c) { @@ -159,6 +182,11 @@ public: insertRow(row, QModelIndex()); } + Q_INVOKABLE void addColumn(int column) + { + insertColumn(column, QModelIndex()); + } + Qt::ItemFlags flags(const QModelIndex &index) const override { Q_UNUSED(index) @@ -178,6 +206,7 @@ private: int m_rows = 0; int m_columns = 0; bool m_dataCanBeFetched = false; + bool m_useCustomRoleNames = false; QHash<int, QString> modelData; Qt::ItemFlags m_flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable; }; |