KD Chart API Documentation 3.1
Loading...
Searching...
No Matches
KDChartDatasetProxyModel.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** This file is part of the KD Chart library.
4**
5** SPDX-FileCopyrightText: 2001 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6**
7** SPDX-License-Identifier: MIT
8**
9****************************************************************************/
10
11#ifndef KDCHARTDATASETPROXYMODEL_H
12#define KDCHARTDATASETPROXYMODEL_H
13
14#include <QSortFilterProxyModel>
15#include <QVector>
16
17#include "kdchart_export.h"
18
19namespace KDChart {
20
21class IndexOutOfBoundsException;
22
24
43class KDCHART_EXPORT DatasetProxyModel : public QSortFilterProxyModel
44{
45 Q_OBJECT
46public:
51 explicit DatasetProxyModel(QObject *parent = nullptr);
52
53 QModelIndex buddy(const QModelIndex &index) const override;
54
55 Qt::ItemFlags flags(const QModelIndex &index) const override;
56
57 QModelIndex index(int row, int column,
58 const QModelIndex &parent = QModelIndex()) const override;
59 QModelIndex parent(const QModelIndex &child) const override;
60
62 QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override;
63
65 QModelIndex mapToSource(const QModelIndex &proxyIndex) const override;
66
68 QVariant data(const QModelIndex &index, int role) const override;
69
71 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
72
74 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
75
77 void setSourceModel(QAbstractItemModel *sourceModel) override;
78
81 void setSourceRootIndex(const QModelIndex &rootIdx);
82
83public Q_SLOTS:
88 void resetDatasetDescriptions();
89
94 void setDatasetColumnDescriptionVector(const DatasetDescriptionVector &columnConfig);
95
100 void setDatasetRowDescriptionVector(const DatasetDescriptionVector &rowConfig);
101
103 void setDatasetDescriptionVectors(
104 const DatasetDescriptionVector &rowConfig,
105 const DatasetDescriptionVector &columnConfig);
106
107 // FIXME: add convenience methods to configure common dataset
108 // selections (like rectangular areas etc)
109
110protected:
112 bool filterAcceptsColumn(int sourceColumn,
113 const QModelIndex &) const override;
114
116 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
117
118private:
120 int mapProxyColumnToSource(const int &proxyColumn) const;
121
123 int mapSourceColumnToProxy(const int &sourceColumn) const;
124
126 int mapProxyRowToSource(const int &proxyRow) const;
127
129 int mapSourceRowToProxy(const int &sourceRow) const;
130
154 void initializeDatasetDecriptors(
155 const DatasetDescriptionVector &inConfiguration,
156 int sourceCount,
157 DatasetDescriptionVector &outSourceToProxyMap,
158 DatasetDescriptionVector &outProxyToSourceMap);
159
160 DatasetDescriptionVector mColSrcToProxyMap;
161 DatasetDescriptionVector mColProxyToSrcMap;
162 DatasetDescriptionVector mRowSrcToProxyMap;
163 DatasetDescriptionVector mRowProxyToSrcMap;
164
165 int mProxyRowCount = 0;
166 int mProxyColumnCount = 0;
167 QModelIndex mRootIndex;
168};
169}
170
171#endif
QVector< int > DatasetDescriptionVector
DisplayRole
typedef ItemFlags
Orientation

© 2001 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-chart/
Generated on Wed May 1 2024 00:01:10 for KD Chart API Documentation by doxygen 1.9.8