PowerModeler/include/tableEditModel.h

62 lines
1.8 KiB
C
Raw Normal View History

#ifndef TABLEEDITMODEL_H
#define TABLEEDITMODEL_H
/**
* @brief Model类
*
*
* 1
* 2
* 3
* 41
* 5icon
* 6*
*
*/
#include <QSqlTableModel>
#include <QSqlRecord>
class TableEditModel : public QSqlTableModel
{
Q_OBJECT
public:
explicit TableEditModel(QObject* parent = nullptr, const QSqlDatabase& db = QSqlDatabase(), const QStringList &visibleColumns = {});
~TableEditModel();
QVariant data(const QModelIndex& index, int role) const override;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) 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);
protected:
QString selectStatement() const override; //调用select()时会使用该函数重写后返回的语句
private:
struct EditRecord //编辑记录
{
QSqlRecord original;
QSqlRecord modified;
bool isNew = false;
bool isDeleted = false;
};
int m_pageSize;
int m_currentPage;
int m_totalRecords;
QStringList m_visibleColumns;
QHash<int, EditRecord> m_editCache; //key:当前页中的row
};
#endif //TABLEEDITMODEL_H