78 lines
2.2 KiB
C++
78 lines
2.2 KiB
C++
#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
|