Qt Creator 窗体控件自适应窗口大小布局

来源:互联网 发布:便携工具 知乎 编辑:程序博客网 时间:2024/05/01 15:16

常见的软件窗口大小改变(最大化、手动改变时)需要窗口的部件能够自适应布局,而在Qt的应用程序界面设计中,对于像我一样的初学者如何实现窗口自适应调整还是要绕点弯路的。网上百度了很多,多数说的很含糊,还有很多是用程序实现的,既然已经有Qt Creator那么高集成度的工具了,我还是倾向于直接在Qt Creator中通过可视化配置的方式完成,一是所见即所得,而是效率要高不少。

Qt中如果想实现窗体内空间随着窗体大小调整,必须使用布局管理,常用的布局管理有QHBoxLayout、QVBoxLayout、QGridLayout,空的地方使用spacer控件进行填充,因此首先将窗体空间使用布局管理典型应用如下图所示。

image

我这里使用QGridLayout,按住Ctrl多选需要布局的窗体控件,右键-布局-栅格化局,根据需要进行调整。

要想是控件根据窗体进行调整,最为重要的一点就是设置窗口部件的大小策略,各控件均有这一项设置,如下图所示。

image

这部分具体的参数解释摘录如下:

结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。

控件的sizePolicy说明控件在布局管理中的缩放方式。Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有的布局,开发人员经常需要改变窗体上的某些控件的sizePolicy。一个QSizePolicy的所有变量对水平方向和垂直方向都适用。下面列举了一些最长用的值:

A. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。

B. Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以

放大。

C. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小

的允许尺寸。

D. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小

E. Expandint:控件可以自行增大或者缩小

注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)

所以对于需要根据窗口大小对应改变的部件我这里就设置为Expandint。

在部件大小策略的下方还有伸缩因子的设置,用于设置窗口部件在伸缩过程中的对应比例,这部分可以自行摸索。

要想实现随着窗口自动缩放,很重要的一点是需要设置顶级布局,对于一个窗口来说,只能有一个布局成为它的顶级布局,而刚刚的设置还只是控件之间的布局,因此需要放入窗体布局中进行布局。

在没有控件的地方右击-布局-在状体布局中布局,如下图所示:

image

接下来把需要布局的布局拖放到窗体布局中,这儿可以在右侧对象中选择,然后将控件向上拖入红框中(发现这一步不做也可以,直接进行下一步,不清楚在窗体布局中布局这项是啥区别),最后再在窗体没有控件出右击-布局-选择水平或者垂直布局(因为我之前已经是栅格布局了,相当于只有一个整体布局,因此这里选择哪一个没有区别)下图是操作前后对象窗口的对比。

imageimage

布局完成后效果如下:

image

到这儿,窗体就可以自由缩放了,由于我这里是使用label控件显示图像,因此窗体大小调整,图像会自动调整。

总结:一开始绕弯主要在两个地方,一个是控件的SizePolicy属性设置,二是一定要设置顶级布局

附:另一篇介绍

Qt 布局管理器 基础学习是本文要介绍的内容,学习Qt的时候,参照帮助手册和相关书籍,其中的例子几乎都是手动的编写代码。至于方便设计界面的Qt designer的例子几乎就没有,想在designer中实现子窗口随主窗口大小变化而变化,整的我郁闷了老半天,后来阅读Qt designer英文手册,才找到了解决的方法,在此和大家一起分享。下述文字是帮助的英文翻译和个人感悟。

1.Qt布局管理器的简介

Qt Designer 是一个可视化的基于 Qt 的用户界面设计工具。用来生成 ui 定义文件,而不考虑具体的语言。很好使用,掌握其中的布局管理是学习好Qt Designer的关键。

布局管理器——在创建的窗口中,为了方便地管理其中的控件,而诞生了布局管理器

将各种控件按照实际需要,放在布局管理器中,可以方便地对其进行管理。此后,窗口大小变化时,其将会自动进行调整变化。

如果你将自己创建的控件放在了布局管理器中,那么再想手工的改变控件的大小时就不有自主了。因为布局管理器已经掌控了你的控件,自动替你进行管理了,不需要你进行移动和调整大小了。

如果你觉着布局管理器管理的不够好,那么你可以通过“breaking layouts”来打破原来的布局,自己重新手工布局也行。

此处,我们重点只是讨论Qt designer的布局管理器的使用。

2.Qt designer 布局管理器的使用方法

首先,选中控件,右击之后,弹出的快捷菜单中包括:

HorizontalLayouts and Vertical Layouts,水平和垂直布局;

The Grid Layout ,网格布局;

Splitter Layouts,分割器布局;

The Form Layout,窗体布局。

其中每个布局效果到底怎么样,我建议大家自己去实践,来回地试一试就会找到感觉。一般常常使用的是

  1. HorizontalLayouts and Vertical Layouts和The Grid Layout  

下边通过一个简单的例子来说明。首先在Qt Designer中创建一个MainWindow主窗口,然后在其中添加一个Label和一个Table Widget控件,最终效果如图1-1所示。

Qt 布局管理器 基础学习

图1-1 布局前界面

其次,选中两个控件,右击,弹出快捷菜单,如图1-2所示。

Qt 布局管理器 基础学习

图1-2 设置布局的快捷菜单

再次,选择Lay Out Vertically选项,效果如图1-3所示。

Qt 布局管理器 基础学习

图1-3 选择控件布局后

然后,单击选中主窗口(注意是单击主窗口,先取消对所有控件的选择,只选中主窗口),右击之,在弹出的快捷菜单中选择“Lay Out Vertically”,建立顶级布局管理器。如图1-4所示。

图1-4 设置顶级布局管理器

Qt 布局管理器 基础学习

到此为止,已经完成。保存之后,按Ctrl+R组合键,查看结果,最大化主窗口,观察效果哦。呵呵…注意,要想达到预想的效果,顶级布局管理器的设置是必不可少的哦


0 0
原创粉丝点击