1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "testmodel.h"
TestModel::TestModel(QObject *parent)
: QAbstractTableModel(parent)
, m_columnCount(1)
, m_rowCount(1)
{
m_data.insert({0,0}, {{Qt::DisplayRole, "0,0"},});
}
void TestModel::appendColumn()
{
beginInsertColumns(QModelIndex{}, m_columnCount, m_columnCount);
++m_columnCount;
endInsertColumns();
}
void TestModel::appendRow()
{
beginInsertRows(QModelIndex{}, m_rowCount, m_rowCount);
++m_rowCount;
endInsertRows();
}
bool TestModel::setData(int row, int column, const QVariant &value, int role)
{
return setData(index(row, column), value, role);
}
QVariant TestModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant{};
auto it_table = m_data.find({index.row(), index.column()});
if (it_table == m_data.end())
return QVariant{};
const CellData &cellData = it_table.value();
auto it_cell = cellData.find(role);
return (it_cell == cellData.end()) ? QVariant{} : it_cell.value();
}
bool TestModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (!index.isValid())
return false;
const Position pos{index.row(), index.column()};
auto it_table = m_data.find(pos);
if (it_table != m_data.end())
it_table.value().insert(role, value);
else
m_data.insert(pos, {{role, value},});
emit dataChanged(index, index);
return true;
}
|