#pragma once #include #include "ZxTableHeaderViewFilter.h" #include "mGuiDataLoad_global.h" class iUnitGroup; class iUnitItem; // 在原先下拉表头的基础上,继续增加单位行,并且支持下拉 // 该类比较特殊,即有ZxTableHeaderViewFilter的下拉内部 // 又有ZxTableHeaderViewUnit的单位处理部分 // 目前无好的方式,只能从ZxTableHeaderViewFilter派生, // 而内部很多函数实现方式又来自ZxTableHeaderViewUnit class M_GUI_DATA_LOAD_EXPORT tTableHeaderViewUnit : public ZxTableHeaderViewFilter { Q_OBJECT public: tTableHeaderViewUnit(const QStringList& listItems, \ QWidget* parent = 0); ~tTableHeaderViewUnit(); void setHeaderData(const QStringList& listTitles, \ const QStringList& listUnits); // 设置表头下拉列表取值(两个接口,分别对应多选和单选) virtual void setColumnItems(const QString& sCurSel, \ const QStringList& listAlls); // 设置Titles,该父类接口请勿启用 [Obsolete] virtual void changeTitles(QStringList listTitles); // 请启用该接口 void changeTitles(const QStringList& listTitles, const QStringList& listUnits); virtual bool isColCbxVisible() const; virtual void hideColCbxs(); // 获取当前显示的列单位 QString getCurUnitOfCol(int col) const; protected: // 重绘,此处有待完善,目前是没有版本,直接把父类搬过来了。 virtual void paintSection(QPainter* painter, const QRect &rect, int logicalIndex) const; // 处理鼠标单击消息 virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); virtual bool eventFilter(QObject *obj, QEvent *event); // 重置表头combo控件大小 virtual void resizeItem(int index); // 删除comboBox控件 virtual void removeCombo(); public Q_SLOTS: // 选择改变时响应 virtual void slotSelChanged(const int, const QString); private slots: void onUnitCbxActivated(int index); void onUnitCbxLostFocus(); void onSectionClicked(int logicalIndex); signals: void sigCbxValueChanged(int column, \ const iUnitItem* pSrcUnitItem, \ const iUnitItem* pDestUnitItem); protected: QComboBox* m_pCbxColUnit; //QStringList m_listTitles; QStringList m_listCurUnits; QStringList m_listBaseUnits; int m_nLastIndex; QMap m_mapUnitGroups; bool m_bUnableSP; };