Qt Utilities  5.11.0
Common Qt related C++ classes and routines used by my applications such as dialogs, widgets and models
checklistmodel.h
Go to the documentation of this file.
1 #ifndef MODELS_CHECKLISTMODEL_H
2 #define MODELS_CHECKLISTMODEL_H
3 
4 #include "../global.h"
5 
6 #include <QAbstractListModel>
7 #include <QList>
8 
9 QT_FORWARD_DECLARE_CLASS(QSettings)
10 
11 namespace Models {
12 
13 class ChecklistModel;
14 
16  friend class ChecklistModel;
17 
18 public:
19  ChecklistItem(const QVariant &id = QVariant(), const QString &label = QString(), Qt::CheckState checked = Qt::Unchecked);
20 
21  const QVariant &id() const;
22  const QString &label() const;
23  Qt::CheckState checkState() const;
24  bool isChecked() const;
25 
26 private:
27  QVariant m_id;
28  QString m_label;
29  Qt::CheckState m_checkState;
30 };
31 
32 inline ChecklistItem::ChecklistItem(const QVariant &id, const QString &label, Qt::CheckState checkState)
33  : m_id(id)
34  , m_label(label)
35  , m_checkState(checkState)
36 {
37 }
38 
42 inline const QVariant &ChecklistItem::id() const
43 {
44  return m_id;
45 }
46 
50 inline const QString &ChecklistItem::label() const
51 {
52  return m_label;
53 }
54 
58 inline Qt::CheckState ChecklistItem::checkState() const
59 {
60  return m_checkState;
61 }
62 
67 inline bool ChecklistItem::isChecked() const
68 {
69  return m_checkState == Qt::Checked;
70 }
71 
72 class QT_UTILITIES_EXPORT ChecklistModel : public QAbstractListModel {
73  Q_OBJECT
74 public:
75  explicit ChecklistModel(QObject *parent = nullptr);
76 
77  int rowCount(const QModelIndex &parent = QModelIndex()) const;
78  Qt::ItemFlags flags(const QModelIndex &index) const;
79  QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
80  QMap<int, QVariant> itemData(const QModelIndex &index) const;
81  bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole);
82  bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles);
83  virtual QString labelForId(const QVariant &id) const;
84  Qt::DropActions supportedDropActions() const;
85  bool insertRows(int row, int count, const QModelIndex &parent);
86  bool removeRows(int row, int count, const QModelIndex &parent);
87  const QList<ChecklistItem> &items() const;
88  void setItems(const QList<ChecklistItem> &items);
89  void restore(QSettings &settings, const QString &name);
90  void save(QSettings &settings, const QString &name) const;
91  static constexpr int idRole();
92 
93 private:
94  QList<ChecklistItem> m_items;
95 };
96 
100 inline const QList<ChecklistItem> &ChecklistModel::items() const
101 {
102  return m_items;
103 }
104 
108 constexpr int ChecklistModel::idRole()
109 {
110  return Qt::UserRole + 1;
111 }
112 } // namespace Models
113 
114 #endif // MODELS_CHECKLISTMODEL_H
const QVariant & id() const
Returns the ID of the item.
#define QT_UTILITIES_EXPORT
Marks the symbol to be exported by the qtutilities library.
static constexpr int idRole()
Returns the role used to get or set the item ID.
Qt::CheckState checkState() const
Returns the check state.
The ChecklistItem class provides an item for use with the ChecklistModel class.
The ChecklistModel class provides a generic model for storing checkable items.
const QString & label() const
Returns the label.
bool isChecked() const
Returns whether the item is checked.
Provides common models.
const QList< ChecklistItem > & items() const
Returns the items.