2026-01-09 17:43:58 +08:00
|
|
|
#ifndef STRUCTDATAMEASUREMENTMODEL_H
|
|
|
|
|
#define STRUCTDATAMEASUREMENTMODEL_H
|
|
|
|
|
/**
|
|
|
|
|
* 结构预览ui的量测类型model
|
|
|
|
|
* */
|
|
|
|
|
#include <QAbstractTableModel>
|
|
|
|
|
|
|
|
|
|
class StructDataSource;
|
|
|
|
|
struct MeasurementInfo;
|
|
|
|
|
struct ExtraProperty;
|
|
|
|
|
|
|
|
|
|
class StructDataMeasurementModel : public QAbstractTableModel
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
enum Columns {
|
|
|
|
|
ColName = 0,
|
|
|
|
|
ColTag = 1,
|
|
|
|
|
ColCode = 2,
|
|
|
|
|
ColSourceType = 3,
|
|
|
|
|
ColConnectPara = 4,
|
|
|
|
|
ColType = 5,
|
|
|
|
|
ColSize = 6,
|
|
|
|
|
ColSource = 7,
|
|
|
|
|
ColStation = 8,
|
|
|
|
|
ColEquipment = 9,
|
|
|
|
|
ColChannel = 10,
|
|
|
|
|
ColPacket = 11,
|
|
|
|
|
ColOffset = 12,
|
2026-01-16 18:40:46 +08:00
|
|
|
ColEnable = 13, //事件
|
|
|
|
|
ColCause = 14, //原因
|
|
|
|
|
ColCommand = 15, //动作
|
|
|
|
|
ColParameters = 16, //参数
|
2026-01-09 17:43:58 +08:00
|
|
|
ColumnCount
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
StructDataMeasurementModel(StructDataSource* dataManager, QObject* parent = nullptr);
|
|
|
|
|
|
|
|
|
|
void setPropertyCodes(const QStringList& codes);
|
|
|
|
|
|
|
|
|
|
void setProperties(const QVector<ExtraProperty>& properties);
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
|
|
|
|
|
|
|
|
|
|
Qt::ItemFlags flags(const QModelIndex& index) const override;
|
|
|
|
|
|
|
|
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
|
|
|
|
|
|
|
|
|
QVector<ExtraProperty> getDisplayedProperties() const;
|
|
|
|
|
|
|
|
|
|
QStringList getDisplayedCodes() const;
|
|
|
|
|
|
|
|
|
|
int findRowByCode(const QString& code) const;
|
|
|
|
|
|
|
|
|
|
void refreshRow(const QString& code);
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
void onPropertyUpdated(const ExtraProperty& updatedProp, bool isNew);
|
|
|
|
|
signals:
|
|
|
|
|
void propertiesLoaded(int count);
|
|
|
|
|
void propertyModified(int row, const ExtraProperty& prop);
|
|
|
|
|
private:
|
|
|
|
|
ExtraProperty* getProperty(int displayRow) const;
|
2026-01-16 18:40:46 +08:00
|
|
|
QVariant getMeasurementData(const ExtraProperty& prop, int col, int role) const;
|
|
|
|
|
bool updateMeasurementData(MeasurementInfo* data, int col, const QVariant& value,int role);
|
2026-01-09 17:43:58 +08:00
|
|
|
QString getTypeText(int type) const;
|
|
|
|
|
QString getSourceText(int source) const;
|
|
|
|
|
int getSourceInt(QString) const;
|
|
|
|
|
private:
|
|
|
|
|
StructDataSource* m_dataManager = nullptr;
|
|
|
|
|
QStringList m_propertyCodes;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|