PowerModeler/include/attributeTableModel.h

78 lines
2.3 KiB
C
Raw Normal View History

#ifndef ATTRIBUTETABLEMODEL_H
#define ATTRIBUTETABLEMODEL_H
/**
* @brief attribute数据的Model类
*
*
* 1
* 2
* 3
* 41
* 5icon
* 6*
*
*/
#include <QAbstractTableModel>
#include <QSqlRecord>
2025-03-25 17:58:48 +08:00
#include "global.h"
class AttributeTableModel : public QAbstractTableModel
{
Q_OBJECT
public:
enum EditState
{
Clean = 0,
Modified,
New,
Deleted
};
2025-03-25 17:58:48 +08:00
explicit AttributeTableModel(const ModelAttributeGroup& modelAttributeGroup
, QObject* parent = nullptr
, const QString& connection = ""
, const QString& tableName = "basic.attribute");
~AttributeTableModel();
QVariant data(const QModelIndex& index, int role) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
Qt::ItemFlags flags(const QModelIndex &index) const override;
//分页控制
void setPageSize(int);
int pageSize() const;
void setCurrentPage(int);
int currentPage() const;
int totalPages() const;
//展示列控制
void setVisibleColumns(const QStringList& columns);
private:
struct RowData
{
QSqlRecord record;
EditState state = Clean;
};
void loadPageData(); // 加载当前页数据
void updateTotalCount(); // 更新总记录数
QString m_connection;
QString m_tableName;
2025-03-25 17:58:48 +08:00
ModelAttributeGroup m_modelAttributeGroup;
2025-03-25 17:58:48 +08:00
PaginationInfo m_paginationInfo;
QStringList m_visibleColumns;
QList<RowData> m_currentPageData;
QHash<int, RowData> m_modifiedRows; //key:global row number
};
#endif //ATTRIBUTETABLEMODEL_H