【QT入门】 Qt代码创建布局之分裂器布局详解

往期回顾:

【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);

}

以上就是分裂器布局的综合运用。分裂器布局可以实现自由调整界面中各个部分的大小比例,个人觉得是一种非常实用的布局方式。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

  • 31
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值