一、Qt中新增QSplitter如何新增:
在qt designer(设计器)中,在控件工具箱中是无法找到这个qsplitter的。
操作步骤:
1、需要选中要被增加到splitter的两个控件,注意是同时选中
2、然后右键菜单->布局->使用拆分器水平布局。如下图:
3、也可以使用上方工具栏中的选项按钮,但是前提也是先选中两个控件。如下图:
上图中子菜单的“使用拆分器水平布局”这个选项是不可点击的。原因是因为,我已经添加过splitter了。
一开始就是这个选项置灰的,无法点击。主要原因有二点:
1、因为只选中了一个控件,需要同时选中两个控件才行。
2、选中的两个控件的父控件,已经有布局了,需要先去除布局。比如上图的mainpage,已经是水平布局了,需要先打破这个布局(右键菜单或者上方标题栏都可以打破布局,不再赘述)
再进行添加splitter的操作。
ps:这两个原因巨坑,一度想弃用qt设计器改用qml,足足耗费1小时才找到原因。
添加了splitter后,再重新将父控件进行布局。
Qt的设计理念是认为splitter是父控件,可以看到splitter是作为父控件被加入到了ui布局中。
qSplitter
---leftBar
---editWidget
所以需要同时选中需要被分割的两个控件,然后再进行添加splitter。
二、添加splitter后,拖动异常
添加完splitter后,拖动会出现UI不符合预期(拖不动,拖一下会跳动)。需要做以下修改:
1、将splitter的两个控件的最大最小宽度设置好,若到达了最大最小宽度,会导致无法拖动
2、若发现拖动后,忽然一个控件被隐藏了,只需关闭qsplitter的ChildrenCollapsiable即可,如下图:
三、Qsplitter的默认宽度如何设置?
当添加完qsplitter后,发现默认的左右控件所处位置不符合预期。
比如我们预期刚启动时,左控件的宽度为100,右控件的宽度为900
可以通过添加如下代码:
//set the splitter default-ratio,第一个参数是代码第几列,因为是左右布局
//总共是10,左侧占据1,右侧占据9
ui->splitter->setStretchFactor(0, 1);
ui->splitter->setStretchFactor(1, 9);