4.QT布局管理

布局管理系统

布局管理器

QLayout类继承图:
在这里插入图片描述
新建Qt Widgets项目mylayout,选择基类QWidget,类名MyWidget

.ui拖用Font Combo Box、Text Edit,单击主界面,ctrl+L,发现两个部件填满界面,运行后随着主界面窗口改变大小
在这里插入图片描述

QBoxLayout(基本布局)

单击主界面,查看属性栏
在这里插入图片描述
在这里插入图片描述
右键主界面,布局->打破布局

//mywidget.cpp构造函数中添加

#include<QHBoxLayout>

    QHBoxLayout *layout=new QHBoxLayout;
    layout->addWidget(ui->fontComboBox);
    layout->addWidget(ui->textEdit);
    layout->setSpacing(50);
    layout->setContentsMargins(0,0,50,100);
    setLayout(layout);

运行结果:
在这里插入图片描述

QGridLayout(栅格布局)

.ui拖用一个Push Button
构造函数中注释之前的

//mywidget.cpp添加如下

#include<QGridLayout>

    QGridLayout *layout=new QGridLayout;
    //从0行0列开始,占据1行2列
    layout->addWidget(ui->fontComboBox,0,0,1,2);
    layout->addWidget(ui->pushButton,0,2,1,1);
    layout->addWidget(ui->textEdit,1,0,1,3);
    setLayout(layout);

运行结果:
在这里插入图片描述

QFormLayout(窗体布局)

构造函数中自己添加的代码全部注释掉
.ui拖用Form Layout,双击,编辑如下:
姓名(&N)的字段类型使用QLineEdit、性别(&S)使用QComboBox、年龄(&A)使用QSpinBox、邮箱(&M)使用QLineEdit
在这里插入图片描述

运行结果:
在这里插入图片描述

综合使用

拖用Horizontal Layout,放入fontComboBox、pushButton
拖用Vertical Spacer分隔符,位置顺序大致如下,属性栏sizeHint设置为100(暂时不会变,见下文)
单击主界面,ctrl+L
运行后Vertical Spacer不可见
在这里插入图片描述

设置部件大小

将Spacer的sizeType改为Fixed,再设置高度100,立刻变化
改变垂直布局管理器中的比例为2:1:
选中horizintalLayout,设置属性layoutStretch为2,1
在这里插入图片描述
在这里插入图片描述
改变窗体布局管理器的输入框宽度和对齐方式:
在这里插入图片描述
在这里插入图片描述

其中,layoutFieldGrowthPolicy设置部件大小的变化方式,layoutRowWrapPolicy设置是否需要换行,layoutLabelAlignment设置标签的对齐方式,layoutFormAlignment设置部件在表单的对齐方式

layoutFormAlignment示例

在这里插入图片描述

可拓展窗口

更改pushButton的文本为“显示可拓展窗口”,属性栏勾选checkable,转到槽toggled(bool)

//mywidget.cpp改动部分

//构造函数中添加
    ui->textEdit->hide();
    
//槽
void MyWidget::on_pushButton_toggled(bool checked)
{
    //设置文本编辑器为可拓展
    ui->textEdit->setVisible(checked);
    if(checked) ui->pushButton->setText(tr("hide"));
    else ui->pushButton->setText(tr("show"));
}

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QSplitter分裂器

新建Qt Widgets项目mysplitter,选择基类QWidget,类名MyWidget

.ui拖用4个Push Button,同时选中,右键->布局->使用分裂器水平布局,拉大分裂器
属性栏设置如下:
在这里插入图片描述
运行结果:
在这里插入图片描述

设置伙伴(buddy)

新建Qt Widgets项目mybuddy,选择基类QWidget,类名MyWidget

.ui拖用4个Label,再拖用Push Button、Check Box、Line Edit、Spin Box
Label的文本编辑如下:
在这里插入图片描述
编辑伙伴关系:
在这里插入图片描述
在这里插入图片描述
返回正常编辑模式:
在这里插入图片描述
观察到文本中的&消失
在这里插入图片描述
运行结果:快捷键对应的字母有下划线
在这里插入图片描述

编辑Tab键顺序

在这里插入图片描述
按自定义顺序单击数字
在这里插入图片描述
运行后,按下Tab键,光标按照选定顺序移动
等价代码:

//mywidget.cpp构造函数中添加:
    setTabOrder(ui->checkBox,ui->lineEdit);//checkBox在lineEdit之前
    setTabOrder(ui->lineEdit,ui->pushButton);
    setTabOrder(ui->pushButton,ui->spinBox);

Qt Creator的定位器

ctrl+K调出定位器
在这里插入图片描述
在这里插入图片描述

参考书目

Qt Creator快速入门第三版

本章代码及使用方法

本章代码

遇到各种提示都点“OK”或者“Yes”(主要是关于版本的兼容性提示)

遇到如下问题的解决方法:
在这里插入图片描述
在“项目”模式的“Build & Run”点击“绿色加号”(任选一个),再回到“编辑”模式
在这里插入图片描述
直接点击“绿色箭头”即可运行
在这里插入图片描述
该方法同样适用于打开Qt Creator自带的“欢迎”界面的案例项目

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B.D.S.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值