JKQtExtras
a library of useful Qt widgets and tools
jkqtecheckablestringlistmodel.h
1 /*
2  Copyright (c) 2015-2020 Jan W. Krieger (<jan@jkrieger.de>)
3 
4  This software is free software: you can redistribute it and/or modify
5  it under the terms of the GNU Lesser General Public License (LGPL) as published by
6  the Free Software Foundation, either version 2.1 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU Lesser General Public License (LGPL) for more details.
13 
14  You should have received a copy of the GNU Lesser General Public License (LGPL)
15  along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 
18 #ifndef JKQTECHECKABLESTRINGLISTMODEL_H
19 #define JKQTECHECKABLESTRINGLISTMODEL_H
20 
21 #include <QStringListModel>
22 #include <QSet>
23 #include "jkqtextras_imexport.h"
24 
25 /** \brief a QStringListModel, which allows to check/uncheck each entry
26  * \ingroup JKQtExtrasToolsClassesModels
27  *
28  * Usage in QListView:
29  * \image html JKQTECheckableStringListModel.png
30  *
31  * Basic usage is simple:
32  *
33  * \snippet jkqtextras_test/testmainwindow.cpp Example: JKQTECheckableStringListModel
34  *
35  */
36 class JKQTEXTRAS_LIB_EXPORT JKQTECheckableStringListModel : public QStringListModel {
37  Q_OBJECT
38 public:
39  explicit JKQTECheckableStringListModel(QObject *parent = 0);
40  explicit JKQTECheckableStringListModel(bool editable, bool checkable, QObject *parent = 0);
41 
42  /** \brief check the \a i -th entry */
43  void setChecked(int i);
44  /** \brief check/uncheck the \a i -th entry */
45  void setChecked(int i, bool c);
46  /** \brief uncheck the \a i -th entry */
47  void setUnChecked(int i);
48  /** \brief is the \a i -th entry checked? */
49  bool isChecked(int i) const;
50  /** \brief uncheck all items */
51  void unCheckAll();
52  /** \brief check all items */
53  void checkAll();
54 
55  /** \brief model contents (texts!) is editable */
56  void setTextEditable(bool editable);
57  /** \brief is the model contents (texts!) editable? */
58  bool isTextEditable() const;
59 
60  /** \brief model contents (texts!) is editable */
61  void setCheckable(bool checkable);
62  /** \brief is the model contents (texts!) editable? */
63  bool isCheckable() const;
64 
65  QVariant data(const QModelIndex &index, int role) const;
66  bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
67 
68  Qt::ItemFlags flags(const QModelIndex &index) const;
69 
70 
71 protected:
72  QSet<int> m_check;
73  bool m_editable;
75 };
76 
77 #endif // JKQTECHECKABLESTRINGLISTMODEL_H
JKQTECheckableStringListModel::data
QVariant data(const QModelIndex &index, int role) const
JKQTECheckableStringListModel::setChecked
void setChecked(int i, bool c)
check/uncheck the i -th entry
JKQTECheckableStringListModel::setTextEditable
void setTextEditable(bool editable)
model contents (texts!) is editable
JKQTECheckableStringListModel::setChecked
void setChecked(int i)
check the i -th entry
JKQTECheckableStringListModel::JKQTECheckableStringListModel
JKQTECheckableStringListModel(bool editable, bool checkable, QObject *parent=0)
JKQTECheckableStringListModel::m_editable
bool m_editable
Definition: jkqtecheckablestringlistmodel.h:73
JKQTEXTRAS_LIB_EXPORT
#define JKQTEXTRAS_LIB_EXPORT
Definition: jkqtextras_imexport.h:95
JKQTECheckableStringListModel::isTextEditable
bool isTextEditable() const
is the model contents (texts!) editable?
JKQTECheckableStringListModel::m_check
QSet< int > m_check
Definition: jkqtecheckablestringlistmodel.h:72
JKQTECheckableStringListModel::JKQTECheckableStringListModel
JKQTECheckableStringListModel(QObject *parent=0)
JKQTECheckableStringListModel::flags
Qt::ItemFlags flags(const QModelIndex &index) const
JKQTECheckableStringListModel::setData
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
JKQTECheckableStringListModel::isChecked
bool isChecked(int i) const
is the i -th entry checked?
JKQTECheckableStringListModel::setCheckable
void setCheckable(bool checkable)
model contents (texts!) is editable
JKQTECheckableStringListModel::isCheckable
bool isCheckable() const
is the model contents (texts!) editable?
JKQTECheckableStringListModel::m_checkable
bool m_checkable
Definition: jkqtecheckablestringlistmodel.h:74
JKQTECheckableStringListModel::setUnChecked
void setUnChecked(int i)
uncheck the i -th entry
JKQTECheckableStringListModel::checkAll
void checkAll()
check all items
JKQTECheckableStringListModel
a QStringListModel, which allows to check/uncheck each entry
Definition: jkqtecheckablestringlistmodel.h:36
JKQTECheckableStringListModel::unCheckAll
void unCheckAll()
uncheck all items