Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel
- 格式:doc
- 大小:117.00 KB
- 文档页数:6
qt控件认知之布局控件1、QFormLayout:表单布局,顾名思义就是实现表单模式的布局。
表单就是提示用户进行交互的一种模式,其主要有两个列组成,第一个列用于显示信息,给予用提提示,一般叫做label域,第二个是需要用户选择输入的,一般叫field域。
表单就是很多由这两项/两列内容组成的行的布局。
label与field关系就是label是关联field的。
表单布局完全可以使用表格布局实现,是一种多行两列的列表,但表单布局提供一种比较完善的策略,其主要有以下优点1)可以适应不同平台外观和感觉的一致性2)支持一行的label和field域换行显示,有两种策略一种是如果输入域过长,field换行显示,还有一种就是不管怎么样都换行显示,当然默认是一行显示两个域就可以了3)创造label--field对很便捷的接口,因为使用一般的布局,想要关联label和field,创建好label和feild,并且调用label的setBuddy才能完成,但formlayout使用addRow就可以直接对应了。
表单布局的样式可以通过几个方面体现1)label的样式,是左对齐还是右对齐,可以使用setLabelAlignment进行设置2)form的样式,其内容的显示方式,则可以通过setFormAlignment进行设置3)表单一行内容的显示,是否换行,则使用setRowWrapPolicy 设置,主要值是DontWrapRows,即Field域永远跟着其label;WrapLongRows,给予label足够的空间,剩余的空间给field域,如果field域的最小空间比剩余的控件大/宽,则field会换行到下一行显示;WrapAllRows,所有的field域不管后面剩余的空间是否够,都自动换行。
4)filed域拉升生长策略growth policy,其主要是FieldGrowthPolicy控制,首先是FieldStayAtSizeHint 0 ,field域永远不会超过有效的sizehint尺寸;ExpandingFieldGrow 1,field域水平尺寸拉升或者最小值超出时会占用可用空间,其他field在sizehint尺寸下不会扩大grow;AllNonFixedFieldGrow 2所有的field允许他们长grow就长grow到填充可用的空间,如果是fixed固定尺寸策略的field则不会长表单由两列组成,所以一本都是分为label和field域,但是有些控件占用两行,所以对每个行其可以通过角色来访问,如LabelRole 0,一个label控件,FieldRole 1,一个field空间,SpanningRole就是占用了label和field两列的控件。
Flex3.0学习笔记总结Flex 3.0 布局控件, 样式(css), 皮肤(skin)介绍演示Flex 3.0 中的布局控件的应用,样式和皮肤的应用∙布局控件 - Flex 中常用的布局控件一览∙样式 - 通过css 控制Flex 中各个控件的样式∙皮肤 - 使用Flash 开发的swf 做控件的皮肤在线DEMO/webabcd/archive/2009/11/09/1598980.html1、布局控件一览Layout.mxml<?xml version="1.0" encoding="utf-8"?><mx:Panel xmlns:mx="/2006/mxml" layout="absolute"title="Layout 常用布局控件一览" width="476" height="427"><mx:Script><![CDATA[import mx.controls.Alert;private function submitForm(e:MouseEvent):void{Alert.show("Item1: " + item1.text, "Alert框");}]]></mx:Script><!--HBox - 水平线性布局VBox - 垂直线性布局--><mx:HBox x="10" y="10" width="438" horizontalGap="50" borderThickness="1 " borderStyle="solid"><mx:Label text="HBox - Label1"/><mx:Label text="HBox - Label2"/></mx:HBox><!--HDividedBox - 在 HBox 的基础上,以垂直方向显示分隔条VDividedBox - 在 VBox 的基础上,以水平方向显示分隔条--><mx:HDividedBox x="10" y="36" width="438" borderThickness="1" borderStyl e="solid"><mx:Label text="HDividedBox - Label1"/><mx:Label text="HDividedBox - Label2"/></mx:HDividedBox><!--Panel - 面板。
1. 表单(Form)是一个容器类,由一个或多个页面组成,每个页面又可包含多个控件对象。
表单集(FormSet)一个或多个表单的集合。
表单集中的表单可以统一处理,也可独立处理。
控件(Control)是放在表单上用以显示数据、执行操作或使表单更易阅读的一种图形对象。
表单和控件是可视化编程的集中体现所在,是组成应用程序的不可缺少的元素。
1.VFP主要控件有:标签、文本框、编辑框、微调框、复选框、选项按钮、列表框、组合框、表格、页框、命令按钮、命令按钮组、线条、图象、形状等。
根据控件和数据的关系划分,控件分为:绑定型控件(Bound Control):内容与后端的表、视图或查询中的字段,或内存变量相关联。
在该控件中输入、修改或选择的值将保存在数据源中。
非绑定型控件:内容不与后端的表、视图或查询中的字段,或内存变量相关联。
1.选择合适的控件:选项按钮组、列表框、下拉列表框、复选框等可为用户提供一组预先设定的数据选项;文本框、编辑框、组合框等可让用户输入预先不能确定的数据;微调框可让用户输入给定范围的数值型数据;命令按钮或命令按钮组可以让用户进行特定的操作;计时器可以在给定的时间间隔内执行指定的操作;表格控件可以操作多行数据;标签、文本框、形状、线条、图形、图像等可以显示信息。
1.设计表单的原则:使用用户熟悉的控件、术语、处理方法来设计表单;表单的外观、操作与Windows中常见的窗口/对话框尽可能地一致,使表单尽可能地简单、易操作;根据任务的不同,设计不同的表单及表单中的控件,以便于用户的使用;应用程序中的表单界面保持一致;根据表单中控件的数量、所表达的数据性质等,设计表单中控件的布局或表单所包含的页面数;具有一定的容错能力。
1.创建表单:表单文件:.SCX/.SCT表单向导表单向导:为单个表创建操作数据的表单。
一对多表单向导:为两个相关表创建操作数据的表单。
两个表之间一定要存在关系,生成的表单中的记录定位按钮只作用于父表,子表记录可通过窗口操作控制。
Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel 本系列笔记的前面几篇分别介绍了Coolite Toolkit的常用控件,从这一篇起将介绍Coolite Toolkit所提供的各种不同的界面布局控件,本篇将要介绍的布局控件是FormLayout和Form Panel,通常使用他们来进行表单界面的布局。
Form Layout在我们平时开发中使用频率非常高,使用它可快速、方便的实现表单界面布局,以及使用一些其他控件自身的特性组合起来实现丰富强大的UI界面。
下面通过一个简单示例来体验FormLayout的强大功能。
<ext:Panel ID="Panel1" runat="server" Title="用户登录" Width="300" Bod yStyle="padding:5px;"><Body><ext:FormLayout ID="FormLayout1" runat="server" Width="150"> <ext:Anchor Horizontal="100%"><ext:TextField ID="tfUserName" runat="server" FieldLa bel="用户名"/></ext:Anchor><ext:Anchor Horizontal="100%"><ext:TextField ID="tfPassword" runat="server" FieldLa bel="用户密码"/></ext:Anchor><ext:Anchor Horizontal="100%"><ext:Button ID="btnLogin" runat="server" Text="登录" /></ext:Anchor></ext:FormLayout></Body></ext:Panel>Coolite Toolkit规定FromLayout控件必须放置在一个容器控件里,如上则将其放置在Panel控件里,通过FormLayout布局了一个用户登录界面,运行效果如下所示:如上只是实现了最基本的界面布局,而且效果并不是很理想。
qt layout用法QT Layout用法什么是QT Layout•QT Layout是QT提供的一种布局管理器,用于在QT界面中管理和控制窗口中的控件的布局和排列。
常用的QT Layout•QHBoxLayout:水平布局,将控件从左到右水平排列。
•QVBoxLayout:垂直布局,将控件从上到下垂直排列。
•QGridLayout:网格布局,将控件按照网格的形式排列。
•QFormLayout:表单布局,用于创建标签-输入框的对应布局。
QHBoxLayout用法•QHBoxLayout是一种水平布局,在水平方向将控件从左到右排列。
•使用方式如下:QHBoxLayout* layout = new QHBoxLayout;layout->addWidget(widget1);layout->addWidget(widget2);layout->addWidget(widget3);setLayout(layout);QVBoxLayout用法•QVBoxLayout是一种垂直布局,在垂直方向将控件从上到下排列。
•使用方式如下:QVBoxLayout* layout = new QVBoxLayout;layout->addWidget(widget1);layout->addWidget(widget2);layout->addWidget(widget3);setLayout(layout);QGridLayout用法•QGridLayout是一种网格布局,可以将控件放置在一个二维网格中。
•使用方式如下:QGridLayout* layout = new QGridLayout;layout->addWidget(widget1, 0, 0); // 第一个参数是要添加的控件,后面两个参数是控件的行和列索引layout->addWidget(widget2, 0, 1);layout->addWidget(widget3, 1, 0);layout->addWidget(widget4, 1, 1);setLayout(layout);QFormLayout用法•QFormLayout是一种表单布局,适用于创建标签-输入框的对应布局。
pythonGUI库图形界⾯开发之PyQt5表单布局控件QFormLayout详细使⽤⽅法与实例PyQt5布局控件QFormLayout简介QFormLayout是label-field式的表单布局,顾明思议,就是实现表单⽅式的布局,表单是提⽰⽤户进⾏交互的⼀种模式,主要有两列组成,第⼀列⽤于显⽰信息,给⽤户提⽰,⼀般叫做label域,第⼆列需要⽤户进⾏选择或输⼊,⼀般叫做field域,label与field的关系就是label关联fieldQFormLayout表单布局的使⽤实例import sysfrom PyQt5.QtWidgets import QApplication ,QWidget ,QFormLayout , QLineEdit, QLabelclass Winform(QWidget):def __init__(self,parent=None):super(Winform,self).__init__(parent)self.setWindowTitle("窗体布局管理例⼦")self.resize(400, 100)fromlayout = QFormLayout()labl1 = QLabel("标签1")lineEdit1 = QLineEdit()labl2 = QLabel("标签2")lineEdit2 = QLineEdit()labl3 = QLabel("标签3")lineEdit3 = QLineEdit()fromlayout.addRow(labl1, lineEdit1)fromlayout.addRow(labl2, lineEdit2)fromlayout.addRow(labl3, lineEdit3)//fromlayout->setRowWrapPolicy(QFormLayout::WrapLongRows);//该参数通常适⽤于⼩屏幕中,当标签和⽂本框在本⾏显⽰不全时,⽂本框会显⽰在下⼀⾏,使得标签独占⼀⾏fromlayout->setLabelAlignment(Qt::AlignLeft);//设置标签的对齐⽅式self.setLayout(fromlayout)if __name__ == "__main__":app = QApplication(sys.argv)form = Winform()form.show()sys.exit(app.exec_())运⾏效果⽰意图setRowWrapPolicy(RowWrapPolicy policy)函数的参数有三个可选项:QFormLayout::DontWrapRows:该参数的含义是⽂本框总是出现在标签的后⾯,其中标签被赋予⾜够的⽔平空间以适应表单中出现的最宽的标签,其余的空间被赋予⽂本框。
layout的用法摘要:一、layout 的定义和作用二、layout 的语法和使用方法三、layout 的常见应用场景四、使用layout 的注意事项五、结论正文:layout 是Python 中一个用于定义和控制文档结构的函数库。
它可以帮助开发者轻松地创建具有复杂结构的文档,如报表、简历、书籍等。
layout 的使用方法简单,功能强大,是Python 开发者必备的工具之一。
首先,我们来看一下layout 的语法。
layout 函数的基本语法如下:```pythonfrom layout import *doc = Document()doc.add(Component())```其中,`from layout import *`是导入layout 库中的所有模块;`doc = Document()`创建一个文档对象;`doc.add(Component())`将组件添加到文档中。
接下来,我们来看一下layout 的常见应用场景。
首先,layout 可以用于创建报表。
通过使用layout,开发者可以轻松地创建具有多个表格、图表和图片的报表。
其次,layout 可以用于创建简历。
使用layout,开发者可以快速地创建一个结构清晰、内容丰富的简历。
最后,layout 还可以用于创建书籍、手册等文档。
然而,在使用layout 时,也有一些需要注意的事项。
首先,开发者需要确保组件的尺寸和位置合适。
如果不合适,可能会导致文档结构混乱。
其次,开发者需要避免在文档中使用过多的组件。
如果组件过多,可能会导致文档加载缓慢,影响用户体验。
总之,layout 是一个非常有用的Python 函数库,可以帮助开发者轻松地创建具有复杂结构的文档。
Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel 本系列笔记的前面几篇分别介绍了Coolite Toolkit的常用控件,从这一篇起将介绍Coolite Toolkit所提供的各种不同的界面布局控件,本篇将要介绍的布局控件是FormLayout和Form Panel,通常使用他们来进行表单界面的布局。
Form Layout在我们平时开发中使用频率非常高,使用它可快速、方便的实现表单界面布局,以及使用一些其他控件自身的特性组合起来实现丰富强大的UI界面。
下面通过一个简单示例来体验FormLayout的强大功能。
<ext:Panel ID="Panel1" runat="server" Title="用户登录" Width="300" Bod yStyle="padding:5px;"><Body><ext:FormLayout ID="FormLayout1" runat="server" Width="150"> <ext:Anchor Horizontal="100%"><ext:TextField ID="tfUserName" runat="server" FieldLa bel="用户名"/></ext:Anchor><ext:Anchor Horizontal="100%"><ext:TextField ID="tfPassword" runat="server" FieldLa bel="用户密码"/></ext:Anchor><ext:Anchor Horizontal="100%"><ext:Button ID="btnLogin" runat="server" Text="登录" /></ext:Anchor></ext:FormLayout></Body></ext:Panel>Coolite Toolkit规定FromLayout控件必须放置在一个容器控件里,如上则将其放置在Panel控件里,通过FormLayout布局了一个用户登录界面,运行效果如下所示:如上只是实现了最基本的界面布局,而且效果并不是很理想。
OK,下面基于这个上面来做一些调整。
现在要实现文本框没有输入数据的时候则提示用户输入,并为其加上非空验证,通过AjaxEvents提供表单提交的事件处理函数,通过Listeners提供表单的提交前的客户端验证功能。
相关代码如下:<Body><ext:FormLayout ID="FormLayout1" runat="server" Width="150"> <ext:Anchor Horizontal="100%"><ext:TextField ID="tfUserName" runat="server"FieldLabel="用户名"EmptyText="请输入用户名"AllowBlank="false"BlankText="用户名不能为空!"/></ext:Anchor><ext:Anchor Horizontal="100%"><ext:TextField ID="tfPassword" runat="server"FieldLabel="用户密码"EmptyText="请输入登录密码"InputType="Password"AllowBlank="false"BlankText="用户密码不能为空!"/></ext:Anchor></ext:FormLayout></Body><Buttons><ext:Button ID="btnLogin" Text="登录" runat="server" Icon="Ac cept"><AjaxEvents><Click OnEvent="LoginClick"><EventMask ShowMask="true" Msg="正在登录系统" M inDelay="500"/></Click></AjaxEvents><Listeners><Click Handler="if(!#{tfUserName}.validate() || !#{tf Password}.validate()) {Ext.Msg.alert('错误提示','用户名和用户密码不能为空!'); return false;}"/></Listeners></ext:Button><ext:Button ID="btnCancel" Text="清空" runat="server" Icon="C ancel"><AjaxEvents><Click OnEvent="CancelClick"/></AjaxEvents></ext:Button></Buttons></ext:Panel>仔细看来FormLayout 控件使用是非常简单的,表单里面具体要设计为什么样子的,最终还得看使用的其他相关控件。
在前面提到FormLayout控件需要放置在一个容器内部,其实Coolite Toolkit专们为FromLayout控件提供了一个容器控件FromPanel于之搭配,其使用方法和Panel基本相同,通过FromPanel+FromLayout组合设计出来的UI界面效果更佳。
如下邮件发送表单示例:<ext:FormPanel ID="FormPanel1" runat="server" BodyStyle="padding:5px; " ButtonAlign="Right"Frame="true" Title="邮件发送表单" Width="450"><Body><ext:FormLayout ID="FormLayout2" runat="server" LabelWidth="6 0"><ext:Anchor Horizontal="100%"><ext:TextField ID="tfTitle" runat="server" FieldLabel ="邮件主题"AllowBlank="false" BlankText="邮件主题不能为空"/> </ext:Anchor><ext:Anchor Horizontal="100%"><ext:TextArea ID="tfContent" runat="server" FieldLabe l="邮件内容" Height="150"/></ext:Anchor><ext:Anchor Horizontal="100%"><ext:FileUploadField ID="upAttachment" runat="server " FieldLabel="邮件附件"ButtonText="选择附件"/></ext:Anchor><ext:Anchor Horizontal="100%"><ext:DateField ID="tfTime" runat="server" FieldLabel= "发送时间"/></ext:Anchor></ext:FormLayout></Body><Buttons><ext:Button ID="btnSend" runat="server" Icon="WorldGo" Text="发送"><AjaxEvents><Click OnEvent="SendClick"/></AjaxEvents></ext:Button></Buttons></ext:FormPanel>需要注意的就是FormLayout 的LabelWidth属性,很多新手朋友在学习Coolite Toolkit 的FromLayout的时候,都遇到字段名和TextBox中间存在很长的距离怎么也调不了,其实这个距离是可以调整的,通过设置LabelWidth属性值既可。