往期回顾:
【QT入门】 Qt内存管理机制详解-CSDN博客
【QT入门】 Qt代码创建布局之水平布局、竖直布局详解-CSDN博客
【QT入门】 Qt代码创建布局之栅格布局详解-CSDN博客
【QT入门】 Qt代码创建布局之分裂器布局详解
一、什么是分裂器布局
在Qt中,分裂器布局(SplitterLayout)是一种常用的布局方式,用于将界面分割成多个可调整大小的区域,用户可以通过拖动分隔条来调整各个区域的大小。分裂器布局通常用于实现可拖动的分割窗格,使用户可以自由调整界面中各个部分的大小比例。
二、如何用代码创建分裂器布局
1、QSplitter
与水平、竖直布局类似的,创建栅格布局也需要用到相关的类QSplitter。QSplitter是 Qt 提供的分割器类,用于分割和管理子部件的布局。
水平分裂器
QSplitter* pHSplitter = new QSplitter(Qt::Horizontal, this);
竖直分裂器
QSplitter* pVSpltter = new QSplitter(Qt::Vertical, pHSplitter);
分裂器也是QWidget的子类,因此分裂器也有addWidget方法,而布局也可以使用addWidget往布局里添加分裂器。
三、具体代码示例
1、界面效果展示:
我们可以通过拉动控件条,自由实现三个Wdiget窗口的大小比例
2、代码分析:
2.1、创建水平布局管理器类
QHBoxLayout *pHLay = new QHBoxLayout(this);
QHBoxLayout 是 Qt 提供的水平布局管理器类,用于管理水平方向上的子部件布局。
new QHBoxLayout(this) 创建一个水平布局管理器,并将当前窗口设为其父对象,以便管理窗口中的子部件的水平布局。
2.2、创建水平分割器
QSplitter * pHSplitter = new QSplitter(Qt::Horizontal,this);
QSplitter 是 Qt 提供的分割器类,用于分割和管理子部件的布局。
new QSplitter(Qt::Horizontal,this) 创建一个水平分割器,并将当前窗口设为其父对象,以便管理水平方向上的子部件布局。
2.3、设置分割条在调整大小时是否显示实际内容
pHSplitter->setOpaqueResize(false);
setOpaqueResize(false) 是 QSplitter 类的方法,用于设置分割条在调整大小时是否显示实际内容。此处设置为 false ,分割条在调整大小时不会显示实际内容。
2.4、设置部件的样式表
pLeftWidget->setStyleSheet("background-color:rgb(55,55,55)");
setStyleSheet() 是 QWidget 类的方法,用于设置部件的样式表,这里将左侧部件的背景颜色设置为灰色。
2.5、设置部件最小宽度
pLeftWidget->setMinimumWidth(200);
设置左侧部件的最小宽度为200像素,确保部件不会缩小到比指定宽度更窄。
四、完整代码示例
注释都写得很详细,大家可以多看看。
// 设置窗口标题
this->setWindowTitle("Qt分裂器布局_c++代码");
// 设置窗口固定大小
this->setFixedSize(600,500);
//整体用水平布局
QHBoxLayout *pHLay = new QHBoxLayout(this);
//整体的水平分裂器
QSplitter * pHSplitter = new QSplitter(Qt::Horizontal,this);
pHSplitter->setOpaqueResize(false);// 设置分割条不透明
QWidget * pLeftWidget = new QWidget(this);
pLeftWidget->setStyleSheet("background-color:rgb(55,55,55)");// 设置背景颜色
pLeftWidget->setMinimumWidth(200);// 设置最小宽度
//在水平分割器中添加左侧部件
pHSplitter->addWidget(pLeftWidget);
//创建垂直分裂器作为右侧内容
//注意参数pHSplitter,表示父指针
QSplitter * pVSplitter = new QSplitter(Qt::Vertical,pHSplitter);
//在拖动到位并弹起鼠标后再显示分割条
pVSplitter->setOpaqueResize(false);
//右侧顶部部件
QWidget *pRightTopWidget = new QWidget(this);
pRightTopWidget->setStyleSheet("background-color:rgb(155,55,55)");// 设置背景颜色
//右侧底部部件为文本浏览器
QTextBrowser * pRightBottom = new QTextBrowser(this);
// 在垂直分割器中添加右侧顶部和底部部件
pVSplitter->addWidget(pRightTopWidget);
pVSplitter->addWidget(pRightBottom);
// 在水平分割器中添加垂直分割器
pHSplitter->addWidget(pVSplitter);
//布局添加分裂器
pHLay->addWidget(pHSplitter);
//设置整体布局
setLayout(pHLay);
}
以上就是分裂器布局的综合运用。分裂器布局可以实现自由调整界面中各个部分的大小比例,个人觉得是一种非常实用的布局方式。
都看到这里了,点个赞再走呗朋友~
加油吧,预祝大家变得更强!