QT布局管理器

#include "mywidget.h"
#include "ui_mywidget.h"
#include <QVBoxLayout>
#include <QGridLayout>

//布局管理器:QBoxLayout-基本布局管理器;QGridLayout-栅格布局管理器;
//QFormLayout-表单布局管理器;QStackedLayout-栈布局管理器
//单击UI主界面并按下Ctrl + L 快捷键;或者或单击设计器上边栏中的垂直布局按钮;
//或者在UI主界面右击,在弹出的菜单栏中选择“布局-> 垂直布局”,此时部件填满整个界面,并随窗口的变化而变化。
MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MyWidget)
{
    ui->setupUi(this);
#if 0
    //QBoxLayout 有两个子类 QHBoxLayout水平布局管理器和 QVBoxLayout垂直布局管理器。
    QVBoxLayout *layoutBox = new QVBoxLayout; //新建垂直布局管理器
    layoutBox->addWidget(ui->fontComboBox); //向布局管理器中添加部件
    //addWidget向布局管理器的末尾添加部件,insertWidget可以实现向指定位置添加部件。
    layoutBox->addWidget(ui->textEdit);
    layoutBox->setSpacing(50); //设置部件间的间隔
    layoutBox->setContentsMargins(0,0,50,100);
    //设置部件管理器到边界的距离,4个参数顺序为左,上,右,下。
    setLayout(layoutBox); //将这个部件设置为MyWidget类的布局
#endif

#if 0
    //QGridLayout-栅格布局管理器
    QGridLayout *layoutGrid = new QGridLayout;
    //添加部件,从第0行0列开始(起始位置),占据1行2列(占据的空间大小)
    layoutGrid->addWidget(ui->fontComboBox,0,0,1,2);
    //添加部件,从第0行2列开始,占据1行1列
    layoutGrid->addWidget(ui->pushButton,0,2,1,1);
    //fontComboBox部件和pushbutton部件的长度是2:1
    //添加部件,从第1行0列开始,占据1行3列
    layoutGrid->addWidget(ui->textEdit,1,0,1,3);
    setLayout(layoutGrid);
#endif

#if 1
    //QFormLayout-表单布局管理器,用来管理表格的输入部件及其相关的标签,左边是一些标签,右边是一些输入部件。
    QFormLayout *layoutForm = new QFormLayout;
    QLineEdit *name = new QLineEdit;
    QLineEdit *sex = new QLineEdit;
    QLineEdit *age = new QLineEdit;
    QLineEdit *mail = new QLineEdit;
    layoutForm->addRow("Name",name);
    layoutForm->addRow("Sex",sex);
    layoutForm->addRow("Age",age);
    layoutForm->addRow("Mail",mail);
    setLayout(layoutForm);
#endif

}

MyWidget::~MyWidget()
{
    delete ui;

}





                
### Qt布局管理器的嵌套使用Qt 的 GUI 开发中,`QLayout` 类提供了多种方式来管理和排列窗口小部件。通过嵌套布局管理器可以构建复杂的用户界面结构。以下是关于如何实现布局管理器嵌套使用的具体方法。 #### 创建主布局和子布局 首先需要分别创建主布局和子布局对象。例如,可以通过 `QVBoxLayout` 或 `QHBoxLayout` 来定义不同的方向布局: ```cpp // 主垂直布局 QVBoxLayout* mainLayout = new QVBoxLayout; // 子水平布局 QHBoxLayout* subLayout = new QHBoxLayout; ``` 上述代码片段展示了如何实例化两个不同类型的布局管理器[^1]。 #### 将子布局添加到主布局 为了实现嵌套效果,需调用主布局的 `addLayout()` 方法或将子布局插入特定位置(如使用 `insertLayout()`)。这一步骤允许将一个布局作为另一个布局的一部分进行管理: ```cpp mainLayout->addLayout(subLayout); ``` 此操作会将 `subLayout` 添加为主布局的一个部分,并由其负责安排其中的小部件或其它布局[^2]。 #### 向子布局添加控件 接着可以在子布局中继续添加所需的控件或者进一步嵌入更深层次的布局: ```cpp QLabel* label = new QLabel("Name:"); QLineEdit* lineEdit = new QLineEdit; subLayout->addWidget(label); subLayout->addWidget(lineEdit); ``` 这里演示了向子水平布局加入标签 (`QLabel`) 和输入框 (`QLineEdit`) 的过程[^3]。 #### 设置顶层窗口的最终布局 最后一步是将整个设计好的主布局应用至顶层窗口上,从而完成整体 UI 架构的设计工作: ```cpp this->setLayout(mainLayout); ``` 这段代码表示将之前配置完毕的复杂层次化的布局体系绑定到了当前窗体之上。 以上就是利用 Qt 实现布局管理器之间相互嵌套的基本流程说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值