Qt之表单布局(QFormLayout)
来源:互联网 发布:python macd指标 宽距 编辑:程序博客网 时间:2024/06/14 09:14
简述
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枚举:
控制表单行的显示策略。
setWidget(int row, ItemRole role, QWidget *widget)
设置行row所对应的控件,如果role为LabelRole时,设置的为标签所对应的控件,如果role为FieldRole时,设置的为输入框所对应的控件。
QFormLayout::ItemRole枚举:
指定一排控件的类型
例如:
//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)
- Qt之表单布局(QFormLayout)
- Qt之表单布局(QFormLayout)
- android布局之表单布局(TableLayout)
- QtCreator 布局管理(QLayout,QBoxLayout,QGridLayout,QFormLayout,QStackedLayout)
- QT学习 之 布局(一) QGridLayout
- Qt之自定义布局管理器(QCardLayout)
- Qt之自定义布局管理器(QFlowLayout)
- Qt之自定义布局管理器(QBorderLayout)
- Qt之格栅布局(QGridLayout)
- Qt之格栅布局(QGridLayout)
- Qt之格栅布局(QGridLayout)
- Qt之格栅布局(QGridLayout)
- Qt之格栅布局(QGridLayout)
- Qt布局之管理
- Qt布局之QStackedLayout
- Qt之布局管理器
- Qt之手动布局
- WGS84、GCJ-02(火星坐标)、百度坐标,Web墨卡托坐标
- OC与javascript进行交互
- Android的IPC机制(二)——AIDL实现原理简析
- 嵌入式操作系统内核原理和开发(总结篇)
- 【BZOJ4145】[AMPPZ2014]The Prices【状压DP】【背包】
- Qt之表单布局(QFormLayout)
- 《c++primer 》string *pstr = new string; *pstr = str;的疑问
- Orange’s学习笔记(一)
- 春哥来了
- 在Eclipse中安装Subclipse
- tomcat多工程SSL双向认证的实现(每个端口对应一个工程,每个工程有各自双向的证书)
- Ubuntu配置NFS服务器与客户端
- 【Android Studio快捷键】之导入相应包声明(import packages)
- 强悍的 Linux —— 网络