11 #include <QIdentityProxyModel> 25 Qt::ItemFlags flags (
const QModelIndex& index)
const override;
26 QVariant data (
const QModelIndex& index,
int role)
const override;
27 bool setData (
const QModelIndex& index,
const QVariant& value,
int role)
override;
32 virtual bool IsChecked (
const QVariant& idVar)
const = 0;
33 virtual void SetChecked (
const QVariant& idVar,
bool checked) = 0;
35 void selectionChanged ();
38 template<
typename IdType>
41 QSet<IdType> Unchecked_;
52 const auto rc = sourceModel ()->rowCount ();
55 result.reserve (rc - Unchecked_.size ());
57 for (
int i = 0; i < rc; ++i)
59 const auto rowId = sourceModel ()->index (i, 0).data (
IdRole_).template value<IdType> ();
60 if (!Unchecked_.contains (rowId))
67 bool IsChecked (
const QVariant& idVar)
const override 69 return !Unchecked_.contains (idVar.value<IdType> ());
72 void SetChecked (
const QVariant& idVar,
bool checked)
override 74 const auto id = idVar.value<IdType> ();
76 Unchecked_.remove (
id);
void SetChecked(const QVariant &idVar, bool checked) override
QSet< IdType > GetChecked() const
CheckableProxyModelBase(int idRole, QObject *parent=nullptr)
bool IsChecked(const QVariant &idVar) const override
QSet< IdType > GetUnchecked() const