#pragma once #include "Defines.h" #include "ZxTableView.h" class ZxTableHeaderView; // 本类主要实现表头可以筛选的表格 class I_PLUGIN_EXPORT ZxTableViewEx : public ZxTableView { Q_OBJECT public: explicit ZxTableViewEx(bool bMultiSel = true, \ QWidget* parent = 0, \ QAbstractItemModel* model = NULL); virtual ~ZxTableViewEx(); //private: void initHeaderView(QStringList list, \ ZxTableModel* pModel = NULL); /// @brief 取得某列不重复的数据,并且转换为QString /// @param nCol 列索引 /// @param bOnlyCurShow 是否仅仅获取表格当前显示内容(考虑筛选后) QStringList getColDistinct(int nCol, bool bOnlyCurShow = true); VVecVariant getCurFilterData(int nIndex); public slots: // 表头的响应 void slotOnGetColumnItems(int index); void slotSelChanged(const int index, const QStringList list); void slotRawDataChanged(); signals: void sigGetFilterData(VVecVariant& vvec, \ const int index, \ const QStringList list); protected: bool m_bMultiSel; //true:多选,CheckBox VVecVariant m_vvecDataAll; //这是当前表格的所有数据,只有当最顶层的筛选条件改变时才会更新 QMap m_mapAllFields; QMap m_mapFilterFields; ZxTableHeaderView* m_pHeaderView; //false:单选,Radio bool m_bEnableSP; };