#pragma once #include #include "iPlugin_global.h" // 此处是为了响应在ZxTableView中的表头进行下拉选择(支持多选/单选两种模式)而做的三个类。 // 其中ZxTableHeaderView是表头,点中其某一列时,创建ZxTableHeaderViewCbx,而ZxTableHeaderViewCbx // 内部又设置了view为ZxTableHeaderViewCbxView // 所以ZxTableHeaderView、ZxTableHeaderViewCbx、ZxTableHeaderViewCbxView为一组 // 该组实现了表头的Radio选择(单选)+ Check选择(多选) class ZxTableHeaderViewCbx; // 表头HeaderView class I_PLUGIN_EXPORT ZxTableHeaderView : public QHeaderView { Q_OBJECT public: ZxTableHeaderView(const QStringList& listItems, \ bool bMultiSelMode, QWidget* parent = 0); ~ZxTableHeaderView(); // 设置表头下拉列表取值(两个接口,分别对应多选和单选) void setColumnItems(const QStringList& listFields, \ const QStringList& listAlls); void setColumnItems(const QString& sCurSel, \ const QStringList& listAlls); // 设置Titles void changeTitles(QStringList listTitles); protected: // 处理鼠标单击消息 void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); // 重置表头combo控件大小 void resizeItem(int index); // 删除comboBox控件 void removeCombo(); // 重绘,此处有待完善,目前是没有版本,直接把父类搬过来了。 void paintSection(QPainter* painter, const QRect &rect, int logicalIndex) const; public Q_SLOTS: // 选择改变时响应 void slotSelChanged(const int, const QStringList); // 选择改变时响应 void slotSelChanged(const int, const QString); // 处理表头单元缩放事件 void handleSectionResized(int index); signals: void sigGetColumnItems(int index); void sigSelChanged(const int, const QStringList); void sigSelChanged(const int, const QString); private: QStringList m_listTitles; //标题 bool m_bMultiSelMode; //是否多选模式 ZxTableHeaderViewCbx* m_pCbxSel; //下拉控件 // 当前表头索引 int m_nCurIndex; // 当前选择的项 QStringList m_listCbxCheckedItems; //多选模式 QString m_sRadioCheckedItem; //单选模式 // 所有项 QStringList m_listAllItems; };