DiagramDesigner/diagramCavas/include/structDataPropertyModel.h

78 lines
2.2 KiB
C
Raw Normal View History

2026-01-09 17:43:58 +08:00
#ifndef STRUCTDATAPROPERTYMODEL_H
#define STRUCTDATAPROPERTYMODEL_H
/**
* ui的参量类型model
* */
#include <QAbstractTableModel>
class StructDataSource;
struct ExtraProperty;
struct propertyStateInfo;
class StructDataPropertyModel : public QAbstractTableModel
{
Q_OBJECT
public:
enum Columns {
ColName = 0,
ColTag = 1,
ColCode = 2,
ColSourceType = 3,
ColConnectPara = 4,
ColModelName = 5,
ColDataType = 6,
ColDefaultValue = 7,
ColLengthPrecision = 8,
ColumnCount
};
StructDataPropertyModel(StructDataSource* dataManager, QObject* parent = nullptr);
// 设置要显示的code列表
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;
// 获取当前显示的code列表
QStringList getDisplayedCodes() const;
// 根据code查找行
int findRowByCode(const QString& code) const;
// 刷新指定code的行
void refreshRow(const QString& code);
private slots:
void onPropertyUpdated(const ExtraProperty& updatedProp, bool isNew);
signals:
void propertyModified(int row, const ExtraProperty& prop);
private:
ExtraProperty* getProperty(int displayRow) const;
QVariant getPropertyData(const ExtraProperty& prop, int col) const;
bool updatePropertyData(propertyStateInfo* data, int col, const QVariant& value);
private:
StructDataSource* m_dataManager = nullptr;
QStringList m_propertyCodes; // 存储当前显示的属性code列表
};
#endif