#pragma once #include "Defines.h" #include "ZxUiBase.h" #include "iPlugin_global.h" class ZxSplitter; // 支持类似Grid的拆分器窗体 // 作者:地大学生 wangjr // 修改者: wangzg class I_PLUGIN_EXPORT ZxSplitterWx : public QWidget { Q_OBJECT public: ZxSplitterWx(QWidget* parent = 0); ZxSplitterWx(int rows, int cols, QWidget* parent = 0); /// @brief 设定滚动条显示策略 /// @param policyH 水平方向策略 /// @param policyV 竖直方向策略 /// @note 本类默认是Qt::ScrollBarAsNeeded,如果需要更改,则在setRCs之前调用本函数进行修改 void setScrollBarsAutoOn(Qt::ScrollBarPolicy policyH = Qt::ScrollBarAsNeeded, \ Qt::ScrollBarPolicy policyV = Qt::ScrollBarAsNeeded); /// @brief 行列设定 /// @param rows 行数(竖直方向) /// @param cols 列数(水平方向) void setRCs(int rows, int cols); /// @brief 设置单元格中的 widget /// @param rows 行数(竖直方向) /// @param cols 列数(水平方向) /// @param pWx 窗体,无需考虑析构 /// @note 请在setRCs之后调用本函数进行修改 void setCellWidget(int row, int col, QWidget* pWx); /// @brief 设定大小比例因子(整数) /// @param vecHs 水平方向 /// @param vecVs 竖直方向 /// @note (1)请在Widget全部设置(setCellWidget)完毕后调用本函数 /// (2)如果某方向不需设置,则传入VecInt为空即可 void setSpStrenchSizes(QList& vecHs, QList& vecVs); /// @brief 父类接口,初始化UI virtual void initUI(); private: // 参数初始化 void init(); // 初始化布局各个拆分器 void layoutSplitters(); public: // 清理 QSplitter 的子部件 static void clearSplitter(QSplitter* pSplitter); private slots: // 分割条移动 void slotOnSplitterMoved(int pos, int index); private: // 布局相关 int m_nRows; int m_nCols; // 滚动条策略 Qt::ScrollBarPolicy m_scrollPolicyH; Qt::ScrollBarPolicy m_scrollPolicyV; // 最外层垂直分割器(竖直模式) ZxSplitter* m_pSplitterMain; int m_nSpacing; //不涉及序列化 bool m_bUnableSP; };