简述

QFormLayout管理输入型控件和关联的标签组成的那些Form表单。

QFormLayout是一个方便的布局类,其中的控件以两列的形式被布局在表单中。左列包括标签,右列包含输入控件,例如:QLineEdit、QSpinBox等。

  • 简述
  • 使用
  • 常用接口
  • 总结

使用

我们可以通过addRow(const QString &labelText, QWidget *field)来创建一个带有给定文本的QLabel及QWidget控件行,它们可以自动的设置为伙伴关系。

QFormLayout *pLayout = new QFormLayout();
pLayout->addRow(QStringLiteral("用户名:"), pUserLineEdit);
pLayout->addRow(QStringLiteral("密码:"), pPasswordLineEdit);
pLayout->addRow(QStringLiteral("验证码:"), pVerifyLineEdit);
pLayout->setSpacing(10);
pLayout->setMargin(10);
setLayout(pLayout);

使用QGridLayout格栅布局编写的比较:

QLabel *pUserNameLabel = new QLabel(this);
QLabel *pPasswordLabel = new QLabel(this);
QLabel *pVerifyLabel = new QLabel(this);pUserNameLabel->setText(QStringLiteral("用户名:"));
pPasswordLabel->setText(QStringLiteral("密码:"));
pVerifyLabel->setText(QStringLiteral("验证码:"));QGridLayout *pLayout = new QGridLayout();
pLayout->addWidget(pUserNameLabel, 0, 0);
pLayout->addWidget(pUserLineEdit, 0, 1);
pLayout->addWidget(pPasswordLabel, 1, 0);
pLayout->addWidget(pPasswordLineEdit, 1, 1);
pLayout->addWidget(pVerifyLabel, 2, 0);
pLayout->addWidget(pVerifyLineEdit, 2, 1);
pLayout->setSpacing(10);
pLayout->setMargin(10);
setLayout(pLayout);

很显然,功能可以实现,但是代码量大了很多。

常用接口

  • setRowWrapPolicy(RowWrapPolicy policy)

    设置换行策略

QFormLayout::RowWrapPolicy枚举:

控制表单行的显示策略。

内容 描述 效果
QFormLayout::DontWrapRows 0 输入框始终在标签旁边
QFormLayout::WrapLongRows 1 标签有足够的空间适应,如果最小大小比可用空间大,输入框会被换到下一行
QFormLayout::WrapAllRows 2 输入框始终在标签下边

  • setWidget(int row, ItemRole role, QWidget *widget)

    设置行row所对应的控件,如果role为LabelRole时,设置的为标签所对应的控件,如果role为FieldRole时,设置的为输入框所对应的控件。

QFormLayout::ItemRole枚举:

指定一排控件的类型

内容 描述
QFormLayout::LabelRole 0 标签
QFormLayout::FieldRole 1 输入框
QFormLayout::SpanningRole 2 跨越标签和输入框的控件

例如:

//pLayout->addRow(pUserNameLabel, pUserLineEdit);
pLayout->setWidget(0, QFormLayout::LabelRole, pUserNameLabel);
pLayout->setWidget(0, QFormLayout::FieldRole, pUserLineEdit);

  • setSpacing(int spacing)
  • setHorizontalSpacing(int spacing)
  • setVerticalSpacing(int spacing)

    设置间距(水平间距、垂直间距)


  • QWidget * QFormLayout::labelForField(QWidget * field)

    通过field获取field对应的标签,这里不一定是QLabel,返回值为QWidget。

总结

当要设计的界面是一种类似于两列和若干行组成的形式时,使用QFormLayout(表单布局)要比QGridLayout(栅格布局)更为方便些。

当界面元素较为复杂时(多行多列),应毫不犹豫的尽量使用栅格布局,而不是使用水平和垂直布局的组合或者嵌套的形式,因为在多数情况下,后者往往会使“局势”更加复杂而难以控制。栅格布局赋予了界面设计器更大的自由度来排列组合界面元素,而仅仅带来了微小的复杂度开销。

Qt之表单布局(QFormLayout)相关推荐

  1. Qt布局管理器之表单布局(QFormLayout)

    QFormLayout顾名思义,主要用来做表单的输入及显示.和前面讲到的QBoxLayout.QGridLayout类似,QFormLayout可以插入widget.layout,直接用QGridLa ...

  2. python嵌套html开发gui_python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例...

    PyQt5布局控件QFormLayout简介 QFormLayout是label-field式的表单布局,顾明思议,就是实现表单方式的布局,表单是提示用户进行交互的一种模式,主要有两列组成,第一列用于 ...

  3. 4.UI界面PyQt-三大布局(盒子布局、网格布局、表单布局)

    1.1盒子布局-BoxLayout垂直 代码如下(示例): import sysfrom PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLay ...

  4. 一步一步学习Bootstrap系列--表单布局

    前言:Bootstrap 属于前端 ui 库,通过现成的ui组件能够迅速搭建前端页面,简直是我们后端开发的福音,通过几个项目的锻炼有必要总结些常用的知识,本篇把常用的Bootstrap表单布局进行归纳 ...

  5. div css表单布局的五个小技巧

    div css表单布局的五个小技巧可以帮助你更灵活的控制表单,使页面更加满意. 1.表单文本输入的移动选择: 在文本输入栏中,如果加入了提示,来访者往往要用鼠标选取后删除,再输入有用的信息.其实只要加 ...

  6. html多级折叠菜单表单,JS实战篇之收缩菜单表单布局

    获取节点的两种方式: 1.通过event对象的srcElement属性: 2.通过事件源对象用this传入. 代码如下: 收缩菜单 · 表单布局 function list(dtNode){ // v ...

  7. Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel

    FormLayout在我们平时开发中使用频率非常高,使用它可快速.方便的实现表单界面布局,以及使用一些其他控件自身的特性组合起来实现丰富强大的UI界面.下面通过一个简单示例来体验FormLayout的 ...

  8. QT模拟表单上传文件到微信服务器

    最近做微信开发,需要上传素材到微信服务器,我就用qt写了一个界面上传素材,首先我们来看下最终的界面: 然后将里面的access_token后面的lineEdit命名为:accessMediaEdit, ...

  9. php联系人表单,PHP联系人表单布局不允许在电子邮件中添加新行

    我有这个代码的联系表单 $message = "Telephone Number: $telephone"."\n"."Job Details: $m ...

最新文章

  1. 图片lightbox2
  2. 区块链创业者:谈企业级区块链落地,传统行业的崛起(分享实录)
  3. excel教程自学网_Excel自学教程:万能查找函数Lookup的神应用和技巧
  4. python爬虫外快_利用Python爬虫轻松挣外快的几个方法(值得收藏)
  5. QTextBrowser显示html文件内容
  6. vtigerCRM 是作为一种开源CRM软件
  7. php each 指针,PHP each() 函数用法简介
  8. Vue.js实战:初识Vue.js
  9. 划痕分析_如何保护相机和镜头不受损坏,灰尘和划痕
  10. 智能手机内存完全透析
  11. 阳光直射对计算机有影响吗,办公电脑需要注意的风水
  12. David I 盛大之行
  13. DBC文件的编辑方法
  14. Meanshift聚类算法
  15. 基于短周期价量特征的多因子选股体系的实现(三)----因子计算
  16. JavaScript中string与number
  17. CGCS2000坐标系与其他坐标系间的差异和转换方法
  18. ES6 中filter过滤器的用法
  19. 张岚老师--上海沪师经纪--刘建
  20. 数据脱敏d18n之一-podman安装

热门文章

  1. mysql可以使用mybaties框架吗_搭建一个简单的mybatis框架
  2. 大数据之Hive教程
  3. 红袖添香唯美中国风PPT模板
  4. 1.5编程基础之循环控制 03 均值 python
  5. 华师大数据科学考研_21考研择校 | 华东师范大学软件工程怎么样?
  6. python3类的继承详解_python3 多重继承机制
  7. layui自定义ajax左侧三级菜单
  8. mysql如何实现逻辑自增_每日一面 - mysql 的自增 id 的实现逻辑是什么样子的?
  9. staf工作笔记-扩展stax官方实例的补坑说明
  10. C++ STL vector的容量