test_sdk/gui/osc/gtl_gui_osc_meas_model.h

66 lines
2.0 KiB
C++

#ifndef GTL_GUI_OSC_MEAS_MODEL_H
#define GTL_GUI_OSC_MEAS_MODEL_H
#include <QAbstractTableModel>
#include <QWidget>
#include "gui/gui_global.h"
#include "math/gtl_math_osc_meas.h"
namespace gtl {
namespace gui {
namespace osc{
class GTL_GUI_EXPORT meas_model : public QAbstractTableModel
{
Q_OBJECT
public:
enum CustomRoles{
IdxRole = Qt::UserRole
};
enum Column { CHAN = 0, PARAM, VALUE, LAST };
explicit meas_model(QObject *parent = nullptr, QAbstractItemModel *channels = nullptr);
// Header:
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
// Basic functionality:
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
// Editable:
bool setData(const QModelIndex &index, const QVariant &value,
int role = Qt::EditRole) override;
Qt::ItemFlags flags(const QModelIndex& index) const override;
bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
OscMeasParamsListPtr measures();
QAbstractItemModel* channels();
void all_done();
private:
OscMeasParamsListPtr _measures;
QAbstractItemModel* _channels;
void remove(int row, QModelIndex& index);
signals:
void measure_changed(int idx);
};
}
} // namespace gui
} // namespace gtl
#endif // GTL_GUI_OSC_MEAS_MODEL_H