我的QT Creator学习笔记(八)——布局管理

       参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著

Qt主要提供了QLayout类及其子类作为布局管理器,它们可以实现常用的布局管理功能。一般只需要使用QLayout的几个子类,它们分别是QBoxLayout(基本布局管理器)、QGridLayout(栅格布局管理器)、QFormLayout(窗口布局管理器)、QStackedLayout(栈布局管理器)。

1、基本布局管理器(QBoxLayout)

       基本布局管理器QBoxLayout类可以使子部件在水平方向或者垂直方向排成列,它将所有空间分成一行盒子,然后将每个部件放入一个盒子中。

1.1在设计模式中使用基本布局管理器

在设计模式中向界面拖入一个Font Combo Box和一个Text Edit,然后点击上方“水平布局”按钮,

 

 

点击之后,可以看到ui文件的源码,多了QBoxLayout类,如下图 

 设计模式下也可以看见layout的几个属性如下图

运行效果如下,子部件填满了窗口,并且会随着窗口部件的变化而变化

1.2在代码中使用基本布局管理器 

在界面上右击,选择布局-》打破布局,然后在mywidget.cpp中添加头文件#include<QVBoxLayout>,并在构造函数中增加以下代码,运行效果与前面一致。

    QVBoxLayout* layout=new QVBoxLayout;
    layout->addWidget(ui->fontComboBox);
    layout->addWidget(ui->textEdit);
    layout->setSpacing(7);//设置部件间的距离
    layout->setContentsMargins(11,11,11,11);//设置边距
                                            //分别是左、上、右、下边距
    setLayout(layout);//将这个布局设置为MyWidget类的布局

2、栅格布局管理器 (QGridLayout)

        栅格布局管理器QGridLayout类使部件在网格中进行布局,它将所有的空间分成一些行和列,行和列的交叉形成了单元格,然后将部件放入一个确定的单元格中。

       在设计模式中再拖入一个pushButton,在MyWidget.cpp中添加头文件<QGridLyout>,在mywidget构造函数中,去掉刚才的布局代码,添加以下代码

   

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

运行效果如下

3、窗体布局管理器(QFormLayout) 

        窗体布局管理器QFormLayout类用来管理表单的输入部件以及与它们相关的标签。窗体布局管理器将它们的子部件分为两列,左边是一些标签,右边是一些输入部件。

      将构造函数中自己添加的布局代码注释掉,然后进入设计模式,从部件栏中找到Form Layout拖到界面上,然后双击它,进入“添加表单布局行”对话框中,添加标签“姓名(&N)"使用QLineEdit,如下图。同样的方法添加:性别(&S)使用QComoBox),年龄(&A)使用SpinBox,邮箱(&M)使用QLineEdit,

添加完后,运行效果如下

也可以在代码中使用addRow函数来完成表单。 

4、综合使用布局管理器

     项目中真正使用时一般是将几种布局管理器综合起来使用。 从部件栏中拖入一个Horizontal Layout,然后将fontComboBox和pushButton放进去,然后再从部件栏中拖入一个Vertical Spacer垂直分隔符,用来在部件间产生间隔,将它放在窗体布局管理器与垂直布局管理器之间。最后单击主界面并按下Ctrl+L快捷键,让整个界面处于一个垂直布局管理器中。运行程序效果如下。

 

如果要用代码实现,可以使用父布局管理器中的addLayout函数,将窗体布局管理器和水平布局管理器作为子布局添加到父布局管理器中。 

 

 

 

 
 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了使更多的Qt初学者能尽快入门Qt,也为了QtQt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十Qt 2D绘图()涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十Qt数据库()XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第一个Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)UDP 四十七、Qt网络(七)TCP(一) 四十Qt网络()TCP(二)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值