分割窗口控件 (SSplitWnd)¶
分割窗口是一个用于创建可调整大小的分割区域的容器控件。它允许用户通过拖动分隔条来动态调整子窗口的大小,常用于创建灵活的布局界面。
基本信息¶
- 类名:
SSplitWnd
- 控件标签:
splitwnd
- 基类:
SWindow
- 功能:提供可拖动调节的分割区域
属性说明¶
基本属性¶
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
sepSize | int | - | 分隔条宽度 |
vertical | bool | - | 分割方向(0-水平分割,1-垂直分割) |
lockFirst | bool | - | 锁定第一个窗格大小(0-不锁定,1-锁定) |
lockSecond | bool | - | 锁定第二个窗格大小(0-不锁定,1-锁定) |
adjustLayout | bool | - | 调整子窗口布局(0-否,1-是) |
外观属性¶
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
sepSkin | string | - | 分隔条皮肤 |
布局属性¶
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
idealSize | int | - | 理想大小 |
minSize | int | - | 最小大小 |
maxSize | int | - | 最大大小 |
pos | float | - | 分隔条位置(0.0-1.0) |
使用示例¶
基本分割窗口¶
``xml
### 垂直分割窗口
``xml
<splitwnd name="splitVertical"
pos="10,320,310,620"
sepSize="5"
vertical="1">
<pane idealSize="150" minSize="100">
<!-- 上方窗格内容 -->
<text pos="10,10">上面板</text>
</pane>
<pane>
<!-- 下方窗格内容 -->
<text pos="10,10">下面板</text>
</pane>
</splitwnd>
带皮肤的分割窗口¶
``xml
### 锁定窗格大小的分割窗口
``xml
<splitwnd name="splitLocked"
pos="320,320,920,620"
sepSize="5"
vertical="0"
lockFirst="1">
<pane idealSize="200">
<!-- 锁定的左侧窗格内容 -->
<text pos="10,10">锁定的左侧面板</text>
</pane>
<pane>
<!-- 可调整的右侧窗格内容 -->
<text pos="10,10">可调整的右侧面板</text>
</pane>
</splitwnd>
事件处理¶
分割窗口控件支持以下事件:
事件名 | EventID | 说明 |
---|---|---|
EVT_SPLIT_PANE_MOVED | EventSplitPaneMoved::EventID | 分隔条移动事件 |
``cpp // 事件处理示例 EVENT_MAP_BEGIN() EVENT_NAME_HANDLER(L"splitBasic", EventSplitPaneMoved::EventID, OnSplitPaneMoved) EVENT_MAP_END()
void OnSplitPaneMoved(IEvtArgs pEvt) { EventSplitPaneMoved pRealEvt = sobj_cast## 代码操作
``cpp
// 查找分割窗口控件
SSplitWnd *pSplitWnd = FindChildByName2<SSplitWnd>(L"splitBasic");
// 设置分隔条位置(0.0-1.0)
pSplitWnd->SetSepPos(0.3f);
// 获取分隔条位置
float fPos = pSplitWnd->GetSepPos();
// 设置分隔条宽度
pSplitWnd->SetAttribute(L"sepSize", L"8");
// 设置分割方向
pSplitWnd->SetAttribute(L"vertical", L"1");
// 获取窗格
SWindow *pPane1 = pSplitWnd->GetPane(SplitPane_First);
SWindow *pPane2 = pSplitWnd->GetPane(SplitPane_Second);
最佳实践¶
- 分割方向:根据界面布局需求选择合适的 vertical 属性值
- 尺寸控制:使用 idealSize、minSize 和 maxSize 控制窗格尺寸范围
- 锁定功能:通过 lockFirst 和 lockSecond 属性锁定特定窗格大小
- 视觉效果:使用 sepSkin 自定义分隔条外观
常见问题¶
Q: 分隔条无法拖动怎么办?¶
A: 检查 sepSize 是否设置合适,确保分隔条有足够的宽度。
Q: 窗格尺寸异常怎么办?¶
A: 检查 minSize 和 maxSize 设置是否合理。
Q: 分割方向不正确怎么办?¶
A: 确认 vertical 属性设置正确,0为水平分割,1为垂直分割。
相关控件¶
- 面板(SPanel) - 基础容器控件
- 堆栈视图(SStackView) - 堆栈布局控件
- 滚动视图(SScrollView) - 支持滚动的容器控件