简介
继承自 QFrame
构造
- 创建竖排分割窗口(一列多行)
QSplitter *splitterVertical = new QSplitter(Qt::Vertical, nullptr);
- 创建横排分割窗口(一行多列)
QSplitter *splitterHorizontal = new QSplitter(Qt::Horizontal, nullptr);
添加部件
- 以子控件的方式添加
QTextEdit *textTop= new QTextEdit(QObject::tr("Top Widget"), splitterVertical);
QTextEdit *textBottom= new QTextEdit(QObject::tr("Bottom Widget"), splitterVertical);
- 以addWidget方式添加
QTextEdit *textTop= new QTextEdit(QObject::tr("Top Widget"));
QTextEdit *textBottom= new QTextEdit(QObject::tr("Bottom Widget"));
splitterVertical->addWidget(textTop);
splitterVertical->addWidget(textBottom);
将QSplitter添加到QWidget中
QHBoxLayout * m_layout = new QHBoxLayout;
m_layout->addWidget(splitterVertical);
ui->centralwidget->setLayout(m_layout);
属性
childrenCollapsible小控件大小是否可以为0
//false: 不可为0
splitterVertical->setChildrenCollapsible(false);
handleWidth拆分线的宽度
//默认取决于平台和样式设置, 可以用以下方法修改:
splitterVertical->setHandleWidth(5);
opaqueResize小控件是否在调整拆分线时动态刷新, 默认为动态(true)
splitterVertical->setOpaqueResize(false);
orientation拆分器的方向, 默认横向
//Qt::Horizontal 或 Qt::Vertical.
splitterVertical->setOrientation(Qt::Vertical); //设置为纵向(一列多行)
接口
设置可拉伸小控件
//设定第0个控件为可拉伸(1:改变总窗口大小时, 这个控件高宽都可以变)
splitterVertical->setStretchFactor(0,1);
返回小控件数量
int QSplitter::count() const
返回一个新的小控件句柄
QSplitterHandle *QSplitter::createHandle()
查找小控件widget的索引
//查找失败则返回-1
int QSplitter::indexOf(QWidget *widget) const
在指定索引处插入窗口widget
//如果widget已经在其中, 它会被移动到新的位置
void QSplitter::insertWidget(int index, QWidget *widget)
返回索引处的widget是否可折叠
bool QSplitter::isCollapsible(int index) const
返回最小大小
QSize QSplitter::minimumSizeHint() const
移动左边/顶边到指定位置
//移动左边/顶边到 index的 pos处
void QSplitter::moveSplitter(int pos, int index)
小控件替换
//替换索引处的widget
QWidget *QSplitter::replaceWidget(int index, QWidget *widget)
恢复窗口布局到指定状态
//成功返回true
bool QSplitter::restoreState(const QByteArray &state)
//例: 从 QSettings中恢复
QSettings settings;
splitter->restoreState(settings.value("splitterSizes").toByteArray());
保存窗口状态
QByteArray QSplitter::saveState() const
设置小控件是否可折叠
//设置索引处的widget是否可折叠
void QSplitter::setCollapsible(int index, bool collapse)
//例: 设置第1个控件不可折叠(即: 不会完全隐藏)
splitterVertical->setCollapsible(1, 0);
设置橡皮筋选择框位置
//在pos处设置一个橡皮筋选择框
void QSplitter::setRubberBand(int pos)
批量设置小控件的大小
//将小控件的大小设置为列表给定的值
//如果是水平拆分器, 列表给定的值将作为宽度, 如果是垂直拆分器, 则作为高度.
//如果少于小控件数量, 则少的部分加载默认值, 如果多, 则多的部分忽略
//如果设置为0, 则小控件不可见.
void QSplitter::setSizes(const QList<int> &list)
返回所有小控件大小列表
//如果是水平拆分器, 则列表为宽度, 否则为高度
QList<int> QSplitter::sizes() const
返回索引处的小控件
//如果没有, 则返回 nullptr
QWidget *QSplitter::widget(int index) const
高级用法
设置拆分器大小不可调整
QSplitterHandle *splitterHandle = splitter->handle(1); //获取第1个分割器
if(splitterHandle)
{
//Disable the Middle Line, it can't adjust.
splitterHandle->setDisabled(true);
}
标签:控件,widget,const,Qt,int,QSplitter,splitterVertical
From: https://www.cnblogs.com/linkyip/p/18166744