#ifndef ALARMEVENTDATAVIEW_H #define ALARMEVENTDATAVIEW_H #include #include #include #include class AlarmEventDataModel : public QAbstractTableModel { Q_OBJECT public: struct RowData { QVector values; }; struct PaginationInfo { int totalEntries; int entriesPerpage; int totalPages; int currentPage; }; struct SectionData { int width = -1; QString text; SectionData(QString t, int w) :text(t), width(w){} }; explicit AlarmEventDataModel(QObject* parent = nullptr); ~AlarmEventDataModel(); 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; private: void iniHeaderData(); void updateCurPageData(); //更新当前页的数据 void updateTotalCount(); //更新总记录数 QVector m_curPageData; QVector m_headerData; PaginationInfo m_paginationInfo; }; class AlarmEventDataDelegate : public QStyledItemDelegate { Q_OBJECT public: explicit AlarmEventDataDelegate(QTableView* view, QObject* parent = nullptr); ~AlarmEventDataDelegate(); void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; private: QTableView* m_tableView; }; class QVBoxLayout; class AlarmEventDataView : public QWidget { Q_OBJECT public: AlarmEventDataView(QWidget* parent = nullptr); ~AlarmEventDataView(); private: QTableView* m_tableView; AlarmEventDataModel* m_tableModel; AlarmEventDataDelegate* m_delegate; QVBoxLayout* m_vLayout; }; #endif