14 : QAbstractItemModel { parent }
15 , Headers_ { std::move (headers) }
19 int FlatItemsModelBase::columnCount (
const QModelIndex& index)
const 21 return index.isValid () ? 0 : Headers_.size ();
24 QVariant FlatItemsModelBase::data (
const QModelIndex& index,
int role)
const 26 if (!index.isValid ())
29 const auto& var = GetData (index.row (), index.column (), role);
30 return var.isValid () ? var : GlobalData_.value (role);
33 QVariant FlatItemsModelBase::headerData (
int section, Qt::Orientation orientation,
int role)
const 35 if (orientation != Qt::Horizontal || role != Qt::DisplayRole)
38 return Headers_.value (section);
41 QModelIndex FlatItemsModelBase::index (
int row,
int col,
const QModelIndex& parent)
const 43 if (parent.isValid () ||
44 row >= GetItemsCount () ||
45 col >= Headers_.size ())
48 return createIndex (row, col);
51 QModelIndex FlatItemsModelBase::parent (
const QModelIndex&)
const 56 int FlatItemsModelBase::rowCount (
const QModelIndex& parent)
const 58 return parent.isValid () ? 0 : GetItemsCount ();
61 void FlatItemsModelBase::SetGlobalData (
const QVariant& data,
int role)
64 GlobalData_ [role] = data;
66 GlobalData_.remove (role);
68 if (
const auto rows = GetItemsCount ())
69 emit dataChanged (index (0, 0), index (rows - 1, Headers_.size () - 1), { role });
FlatItemsModelBase(QStringList headers, QObject *=nullptr)