欢迎光临散文网 会员登陆 & 注册

布局管理入门

2021-12-07 10:03 作者:海鸥之道  | 我要投稿

在上节中我们只介绍了一个按钮控件,如果需要更多的控件,则可以从左侧的Widget Box(工具箱)中进行拖曳。本节重点介绍对这些控件的布局。

Qt Designer提供了4种窗口布局方式,分别是:Vertical Layout(垂直布局)、Horizontal Layout(水平布局)、Grid Layout(栅格布局)和Form Layout(表单布局)。它们位于Qt Designer主窗口左侧区域的Widget Box(工具箱)里的Layouts(布局)栏中,如图所示。

布局窗口
  • 垂直布局(Vertical Layout):控件默认按照从上到下的顺序进行纵向添加。

  • 水平布局(Horizontal Layout):控件默认按照从左到右的顺序进行横向添加。

  • 栅格布局(Grid Layout):将窗口控件放入一个网格之中,然后将它们合理地划分成若干行(row)和列(column),并把其中的每个窗口控件放置在合适的单元(cell)中,这里的单元即是指由行和列交叉所划分出来的空间。

  • 表单布局:控件以两列的形式布局在表单中,其中左列包含标签,右列包含输入控件。

一般进行布局有两种方式:一是通过布局管理器进行布局;二是通过容器控件进行布局。

1、使用布局管理器

以水平布局为例,打开Qt Designer,新建一个QWidget控件,然后在其中放入两个子控件:一个文本框(lineEdit)和一个按钮( pushButton)。选中这两个控件,然后单击鼠标右键,在弹出的快捷菜单中选择“布局”的子菜单就可以指定该控件的布局方式了,此处选择“水平布局”,如图所示。

布局管理器

将.ui文件转换成.py文件后,可以看到如下内容。本例文件名为MainWin01.py。

可以看到,子控件QpushButton(按钮)和 QlineEdit(文本框)在构建的时候指定的父控件对象就是 QWidget,布局对象QHBoxLayout指定的父控件对象也是QWidget。这与在 Qt Designer的对象查看器中看到的对象依赖关系是一样的,如图所示。

当然,也可以直接拖拽Layouts下面的工具框,进行快速布局,例如:放入一个水平布局框,然后一次放入三个Button,会自动水平对齐,如图:

水平对齐

同理,自行尝试做出如下效果:

计算器界面练习


2、使用容器进行布局

所谓容器控件,就是指能够容纳子控件的控件。使用容器控件,目的是将容器控件中的控件归为一类,以有别于其他控件。当然,容器控件也可以对其子控件进行布局,只不过没有布局管理器常用。下面对其进行简单介绍。

同样以水平布局为例,新建一个 MainWindow,从左侧容器(Containers)导航栏拖入一个 Form控件,然后在Form 控件中放入 Label、LincEdit、Button控件,并对其进行重命名,如图所示。

本例文件名为 ContainersWin.ui。将 ContainersWin.ui编译为ContainersWin.py,代码如下:

注意容器QFrame与子控件之间有一个 QHBoxLayout。可以看到,使用容器进行控件布局本质上还是调用布局管理器进行的。

虽然布局管理器在某些时候方便了我们的操作,但是我们在布局时,千万不要过于依赖布局管理器,因为在一些复杂的界面,布局管理器反而称为负担,所以在这里提个醒。




布局管理入门的评论 (共 条)

分享到微博请遵守国家法律