控件自动布局方法

文档序号:8380643阅读:151来源:国知局
控件自动布局方法
【技术领域】
[0001]本发明涉及嵌入式开发领域,尤其涉及一种基于Qt的图形界面开发中控件自动布局方法。
【背景技术】
[0002]Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发⑶I程序,也可用于开发非⑶I程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于1S的完全支持,新增WinRT、Beautif ier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持1S、Android、WP。
[0003]在面向对象的图形界面开发过程中,一个主界面通常由多个窗口组成,每个窗口包含多种控件来实现不同功能,当窗口内的控件数量较多时,如何对这些控件进行有序而美观的布局成为一个难题。以往多采用绝对位置坐标方法,以窗口左上角为(0,0)原点对每个控件的摆放位置进行设置,例如Qt中提供了 setGeometry方法,此时每个控件的位置都是基于窗口原点的绝对位置偏移。这就引出一个问题,当某个控件的尺寸或位置发生改变时,其余许多控件很可能也要重新改变尺寸或位置,以保持整体的布局效果,该问题在窗口具有大量控件的情况下显得尤为突出,控件之间耦合度大,不利于代码维护。

【发明内容】

[0004]本发明要解决的技术问题是如何解决采用绝对位置坐标方法进行控件布局的弊端。
[0005]为了解决这一技术问题,本发明提供了一种控件自动布局方法,其特征在于:包括如下步骤:
[0006]S1:在窗口中添加若干控件,同时确定控件在窗口中所在行、列的位置;
[0007]S2:设定控件之间以及控件与窗口边缘的间距;
[0008]S3:依据步骤SI和S2设置的间距和位置,若干控件自动在窗口中布置;
[0009]S4:响应外部输入调整其中一个控件的尺寸、位置时,其他控件在保证间距的条件下,做相应的尺寸、位置变化;
[0010]响应外部输入调整窗口的尺寸、位置时,其中的控件做相应的位置变化和同比例的尺寸变化,从而使得控件之间以及控件与窗口边缘的间距也随之同比例的变化。
[0011 ] 可选的,所述步骤SI进一步包括在窗口类的构造函数中创建QGri dLayout类的对象变量,通过该变量调用addWidget或addLayout方法添加控件。
[0012]可选的,所述步骤S2进一步包括通过该变量调用SetSpacing和setContentsMargins方法对控件之间以及控件与窗口边缘的间距进行设置。
[0013]可选的,在所述步骤S3和S4中,调用窗口类的setLayout方法实现窗口内控件的自动布置。
[0014]可选的,在通过该变量调用addWidget方法添加控件时,通过指定所要添加控件在窗口中所在行、列的位置序号确定控件在窗口中所在行、列的位置。
[0015]可选的,在通过该变量调用addLayout方法添加控件时,添加的对象变量为QHBoxLayout、QVBoxLayout 类。
[0016]可选的,在所述步骤SI中,先将部分控件布局在一起形成控件组;
[0017]在通过该变量调用addLayout方法添加控件时,通过将已布局好的一组控件组添加到窗口的某一行或某一列确定控件在窗口中所在行、列的位置。
[0018]可选的,所述控件为Qt控件。
[0019]可选的,所述控件为基于Qt控件派生的自定义控件。
[0020]在本发明中,各控件之间没有直接的位置关系,当某控件尺寸或位置发生变动时,其余控件依然会按照既定的布局设置自适应的调整外观尺寸或摆放位置。自动布局方法可轻松实现窗口缩放,保证窗口内所有控件外观尺寸和摆放位置也同比例的自动缩放,这是绝对位置坐标方法无法实现的。
【附图说明】
[0021]图1是本发明一可选的实施例中控件自动布局方法的原理示意图;
[0022]图2是本发明一可选的实施例中控件自动布局方法的具体流程示意图。
【具体实施方式】
[0023]以下将结合图1和图2对本发明提供的控件自动布局方法进行详细的描述,其为本发明可选的实施例,可以认为,本领域的技术人员在不改变本发明精神和内容的范围内,能够对其进行修改和润色。
[0024]本发明提供了一种控件自动布局方法,简单来说:本实施例中,先在窗口类的构造函数中创建QGridLayout类的对象变量,通过该变量调用addWidget或addLayout方法添加控件,然后通过该变量调用setSpacing和setContentsMargins方法对各控件、控件与窗口边缘的间距进行设置,最后调用窗口类的setLayout方法对窗口内控件进行布局。
[0025]具体来说,包括如下步骤:
[0026]S1:在窗口中添加若干控件,同时确定控件在窗口中所在行、列的位置;即图1中所示添加控件到窗口中进行二维排列;
[0027]在本实施例中,所述步骤SI进一步包括在窗口类的构造函数中创建QGridLayout类的对象变量glay,通过该变量调用addWidget或addLayout方法添加控件。
[0028]在通过该变量调用addWidget方法添加控件时,通过指定所要添加控件在窗口中所在行、列的位置序号确定控件在窗口中所在行、列的位置。换言之QGridLayout类的addWidget方法能够指定所要添加控件在窗口中所在行、列的位置序号。控件可以是Qt控件,也可以是基于Qt控件派生的自定义控件。
[0029]在通过该变量调用addLayout方法添加控件时,添加的对象变量为QHBoxLayout、QVBoxLayout 类。
[0030]在所述步骤SI中,先将部分控件布局在一起形成控件组;
[0031]在通过该变量调用addLayout方法添加控件时,通过将已布局好的一组控件组添加到窗口的某一行或某一列确定控件在窗口中所在行、列的位置。
[0032]换言之,QGridLayout类的 addLayout 方法用于添加 QHBoxLayout、QVBoxLayout类的对象变量,能够将已布局好的一组控件添加到窗口中的某一行或某一列上。控件可以是Qt控件,也可以是基于Qt控件派生的自定义控件。
[0033]S2:设定控件之间以及控件与窗口边缘的间距;
[0034]所述步骤S2进一步包括通过该变量,即对象变量glay,调用SetSpacing和setContentsMargins方法对控件之间以及控件与窗口边缘的间距进行设置。
[0035]S3:依据步骤SI和S2设置的间距和位置,若干控件自动在窗口中布置;
[0036]在所述步骤S3和S4中,调用窗口类的setLayout方法实现窗口内控件的自动布置。即对窗口内空间进行整体布局
[0037]S4:响应外部输入调整其中一个控件的尺寸、位置时,其他控件在保证间距的条件下,做相应的尺寸、位置变化;
[0038]响应外部输入调整窗口的尺寸、位置时,其中的控件做相应的位置变化和同比例的尺寸变化,从而使得控件之间以及控件与窗口边缘的间距也随之同比例的变化。
[0039]综上所述,在本发明中,各控件之间没有直接的位置关系,当某控件尺寸或位置发生变动时,其余控件依然会按照既定的布局设置自适应的调整外观尺寸或摆放位置。自动布局方法可轻松实现窗口缩放,保证窗口内所有控件外观尺寸和摆放位置也同比例的自动缩放,这是绝对位置坐标方法无法实现的。
【主权项】
1.一种控件自动布局方法,其特征在于:包括如下步骤: S1:在窗口中添加若干控件,同时确定控件在窗口中所在行、列的位置; 52:设定控件之间以及控件与窗口边缘的间距; 53:依据步骤SI和S2设置的间距和位置,若干控件自动在窗口中布置; 54:响应外部输入调整其中一个控件的尺寸、位置时,其他控件在保证间距的条件下,做相应的尺寸、位置变化; 响应外部输入调整窗口的尺寸、位置时,其中的控件做相应的位置变化和同比例的尺寸变化,从而使得控件之间以及控件与窗口边缘的间距也随之同比例的变化。
2.如权利要求1所述的控件自动布局方法,其特征在于:所述步骤SI进一步包括在窗口类的构造函数中创建QGridLayout类的对象变量,通过该变量调用addWidget或addLayout方法添加控件。
3.如权利要求2所述的控件自动布局方法,其特征在于:所述步骤S2进一步包括通过该变量调用SetSpacing和setContentsMargins方法对控件之间以及控件与窗口边缘的间距进行设置。
4.如权利要求1至3任一之一所述的控件自动布局方法,其特征在于:在所述步骤S3和S4中,调用窗口类的setLayout方法实现窗口内控件的自动布置。
5.如权利要求2所述的控件自动布局方法,其特征在于:在通过该变量调用addWidget方法添加控件时,通过指定所要添加控件在窗口中所在行、列的位置序号确定控件在窗口中所在行、列的位置。
6.如权利要求2所述的控件自动布局方法,其特征在于:在通过该变量调用addLayout方法添加控件时,添加的对象变量为QHBoxLayout、QVBoxLayout类。
7.如权利要求2所述的控件自动布局方法,其特征在于:在所述步骤SI中,先将部分控件布局在一起形成控件组; 在通过该变量调用addLayout方法添加控件时,通过将已布局好的一组控件组添加到窗口的某一行或某一列确定控件在窗口中所在行、列的位置。
8.如权利要求1或2或6或7所述的控件自动布局方法,其特征在于:所述控件为Qt控件。
9.如权利要求1或2或6或7所述的控件自动布局方法,其特征在于:所述控件为基于Qt控件派生的自定义控件。
【专利摘要】本发明提供了一种控件自动布局方法,包括如下步骤:S1:在窗口中添加若干控件,同时确定控件在窗口中所在行、列的位置;S2:设定控件之间以及控件与窗口边缘的间距;S3:依据步骤S1和S2设置的间距和位置,若干控件自动在窗口中布置;S4:响应外部输入调整其中一个控件的尺寸、位置时,其他控件在保证间距的条件下,做相应的尺寸、位置变化;响应外部输入调整窗口的尺寸、位置时,其中的控件做相应的位置变化和同比例的尺寸变化,从而使得控件之间以及控件与窗口边缘的间距也随之同比例的变化。
【IPC分类】G06F3-0481
【公开号】CN104699376
【申请号】CN201510158657
【发明人】高宇, 史云鹏, 辜鹏
【申请人】上海航天测控通信研究所
【公开日】2015年6月10日
【申请日】2015年4月3日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1