FlightGear next
ModelDataExtractor.hxx
Go to the documentation of this file.
1#ifndef MODELDATAEXTRACTOR_HXX
2#define MODELDATAEXTRACTOR_HXX
3
4#include <QObject>
5#include <QJSValue>
6#include <QVariant>
7
8class QAbstractItemModel;
9
10class ModelDataExtractor : public QObject
11{
12 Q_OBJECT
13public:
14 explicit ModelDataExtractor(QObject *parent = nullptr);
15
16 Q_PROPERTY(QJSValue model READ model WRITE setModel NOTIFY modelChanged)
17 Q_PROPERTY(int index READ index WRITE setIndex NOTIFY indexChanged)
18 Q_PROPERTY(QString role READ role WRITE setRole NOTIFY roleChanged)
19
20 Q_PROPERTY(QVariant data READ data NOTIFY dataChanged)
21
22 QJSValue model() const
23 {
24 return m_rawModel;
25 }
26
27 int index() const
28 {
29 return m_index;
30 }
31
32 QString role() const
33 {
34 return m_role;
35 }
36
37 QVariant data() const;
38
39signals:
40
43 void roleChanged(QString role);
44
46
47public slots:
48 void setModel(QJSValue model);
49 void setIndex(int index);
50 void setRole(QString role);
51
52private slots:
53 void onDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight);
54
55private:
56 void clear();
57
58 QAbstractItemModel* m_model = nullptr;
59 QJSValue m_rawModel;
60 QStringList m_stringsModel;
61
62 int m_index = 0;
63 QString m_role;
64};
65
66#endif // MODELDATAEXTRACTOR_HXX
void roleChanged(QString role)
ModelDataExtractor(QObject *parent=nullptr)
void setRole(QString role)
void setModel(QJSValue model)
void indexChanged(int index)