#pragma once #include #include class Q_CORE_EXPORT ChecklistModel : public QAbstractListModel { Q_OBJECT public: struct ChecklistItem { QString displayText; QVariant data; bool checked; }; explicit ChecklistModel(QObject *parent = nullptr); explicit ChecklistModel(const QStringList &items, QObject *parent = nullptr); explicit ChecklistModel(const QList &strings, QObject *parent = nullptr); const QList &items() const; void setItems(const QList &items); void setItems(const QStringList &items); QStringList itemTexts() const; QVariantList itemDatas() const; QList enabledItems() const; QList disabledItems() const; QStringList enabledTexts() const; QStringList disabledTexts() const; QVariantList enabledItemDatas() const; QVariantList disabledItemDatas() const; int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; bool setData(const QModelIndex &index, const QVariant &value, int role) override; Qt::ItemFlags flags(const QModelIndex &index) const override; private: QList m_items; };