QSplitter 分裂器
最后更新于:2022-04-02 02:11:56
[TOC]
## 概述
1. 分裂器自身占据的大矩形四个边界线通常不能拖动拉大,只能拖动控件之间的手柄
使用
* 在设计器中
使用分裂器的方式是:选中已有的控件,然后点击上面工具栏的水平分裂器或垂直分裂器按钮
* 在代码中
```
//比如 lay1 和 lay2 是已有的布局器,要添加到分裂器里
//分裂器
QSplitter *spl = new QSplitter(Qt::Horizontal, this);
spl->setGeometry(0, 0, 400, 300);
//用 wid1 包裹 lay1,添加到分裂器
QWidget *wid1 = new QWidget(this);
wid1->setLayout( lay1 ); //设置 wid1 的布局器
spl->addWidget(wid1);
//用 wid2 包裹 lay2,添加到分裂器
QWidget *wid2 = new QWidget(this);
wid2->setLayout( lay2 ); //设置 wid2 的布局器
spl->addWidget(wid2);
```
## 常用函数
```
QSplitter(Qt::Orientation orientation, QWidget * parent = 0)
void setOrientation(Qt::Orientation)
void addWidget(QWidget * widget) // 向分裂器中添加控件
void insertWidget(int index, QWidget * widget)
int count() const // 统计有几个控件
int indexOf(QWidget * widget) const // 控件的索引位置
QWidget * widget(int index) const // 某个索引的位置
void setHandleWidth(int) // 分裂器手柄的宽度
void setChildrenCollapsible(bool) // 分裂器压缩控件过小,会隐藏此控件,可通过此接口设置是否隐藏
void setCollapsible(int index, bool collapse) // 设置某个控件是否可折叠
bool isCollapsible(int index) const
void splitterMoved(int pos, int index) //手柄拖动信号
QByteArray saveState() const // 获取分裂器的拖动状态,可写入QSetting s中
bool restoreState(const QByteArray & state) // 设置分裂状态
// 分裂器的保存状态在程序结束前,恢复状态在程序开始前
```
';