PowerModeler/include/attributeTableModel.h

97 lines
2.8 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"
#include "messageDialog.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();
QModelIndex index(int row, int column, const QModelIndex& parent) const override;
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 previousPage();
void nextPage();
void firstPage();
void lastPage();
//数据操作
void setTable(const QString&);
void refresh();
void insertRecord(int);
void removeRecord(int);
//展示列控制
void setVisibleColumns(const QStringList& columns);
void triggerSyncSignal();
signals:
void syncDataStatus(bool, const PaginationInfo&);
void showMessage(MessageDialogType,const QString&,const QString&);
private:
struct RowData
{
//QSqlRecord record;
QVector<QVariant> values;
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