#pragma once #include #include #include #include #include #include #include #include #include // 此处是为了响应在QTableWidget中的表头进行下拉选择(支持多选)而做的三个类。 // 其中QHeaderViewEx是表头,点中其某一列时,创建QHeaderComboBoxEx,而QHeaderComboBoxEx // 内部又设置了view为QListViewEx // 此处是为了响应在QTableWidget中的表头进行下拉选择(支持多选)而做的三个类。 // 其中ZxHeaderViewEx是表头,点中其某一列时, // 创建ZxHeaderComboBoxEx,而ZxHeaderComboBoxEx // 内部又设置了view为ZxListViewEx // 所以ZxHeaderViewEx、ZxHeaderComboBoxEx、ZxListViewEx为一组 // 该组实现了表头的Radio选择(单选) // 而原来的QHeaderViewEx、ZxTableHeaderViewCbx、QListViewEx为一组 // 这一组实现了表头的Check选择(多选) // 表头HeaderView class I_PLUGIN_EXPORT ZxTableHeaderView : public QHeaderView { Q_OBJECT public: ZxTableHeaderView(const QStringList& lstStrText, QWidget *parent = 0); ~ZxTableHeaderView(); // 设置表头下拉列表取值 void setColumnItems(const QStringList& lstFields, const QStringList& lstAlls); // 设置Titles void changeTitles(QStringList listTitles); public Q_SLOTS: // 选择改变时响应 void slotSelChanged(const int, const QStringList); // 处理表头单元缩放事件 void handleSectionResized(int index); signals: void sigGetColumnItems(int index); void sigSelChanged(const int, const QStringList); protected: // 重置表头combo控件大小 void resizeItem(int index); // 删除comboBox控件 void removeCombo(); // 处理鼠标单击消息 void mouseReleaseEvent(QMouseEvent *e); void mousePressEvent(QMouseEvent *e); // 重绘,此处有待完善,目前是没有版本,直接把父类搬过来了。 void paintSection(QPainter* painter, const QRect &rect, int logicalIndex) const; private: QStringList m_lstHeaderTexts; //标题 QStringList m_lstComboxText; ///< 下拉列表中显示表头列表,当前选中的 QStringList m_lstComboxTextAll;///< 下拉列表中显示表头列表,所有的 QComboBox* m_pCbxSel; ///< 表头下拉列表控件 int m_nCurIndex; ///< 被选中的表头单元ID };