|
|
#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 设定竖直方向拖动,是否同步拖动,默认为true
|
|
|
void setSyncDragging(bool bSyncDragging);
|
|
|
|
|
|
/// @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(const QList<int>& vecHs, const QList<int>& vecVs);
|
|
|
|
|
|
/// @brief 设定主分割器(垂直布局)大小比例因子(整数)
|
|
|
/// @param vecSizes
|
|
|
/// @note 请在Widget全部设置(setCellWidget)完毕后调用本函数
|
|
|
void setSpMainSizes(const QList<int>& vecSizes);
|
|
|
|
|
|
/// @brief 设定主分割器(垂直布局)大小比例因子(整数)
|
|
|
/// @param vecSizes
|
|
|
/// @note 请在Widget全部设置(setCellWidget)完毕后调用本函数
|
|
|
void setSpSubSizes(int r, const QList<int>& vecSizes);
|
|
|
|
|
|
/// @brief 父类接口,初始化UI
|
|
|
virtual void initUI();
|
|
|
|
|
|
/// @brief 获取主分割器,垂直布局的
|
|
|
ZxSplitter* getSpMain();
|
|
|
/// @brief 获取子分割器,每一行的,水平分割器
|
|
|
ZxSplitter* getSpSub(int r);
|
|
|
|
|
|
private:
|
|
|
|
|
|
// 参数初始化
|
|
|
void init();
|
|
|
|
|
|
// 初始化布局各个拆分器
|
|
|
void layoutSplitters();
|
|
|
|
|
|
// 布局器
|
|
|
void setSpSizes(ZxSplitter* p, const QList<int>& vecSizes);
|
|
|
|
|
|
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_bSyncDragging; //竖直方向拖动,是否同步拖动,默认为true
|
|
|
bool m_bUnableSP;
|
|
|
};
|
|
|
|