当前位置:网站首页>布局管理器~登录界面的搭建实例
布局管理器~登录界面的搭建实例
2022-06-26 13:17:00 【風清掦】
所谓的图形用户界面(GUI ),本质上就是一堆组件的叠加。创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。因此,组件位置的放置尤其重要,指定组件放置的位置,以便窗口能够按照需要的方式进行渲染。这就涉及到组件定位的机制。
Qt 提供了两种组件定位机制:绝对定位和布局定位。
- 绝对定位:给出组件的坐标和长宽值。这样Qt 就能知道组件的位置以及设置组件的大小。但这有一个问题:若用户改变了窗口大小,比如点击最大化按钮或者使用鼠标拖动窗口边缘,采用绝对定位的组件是不会有任何响应的。这是因为并没有告诉 Qt在窗口变化时,组件是否要更新自己以及如何更新。
- 布局定位:将组件放入某一种布局,布局由专门的布局管理器进行管理。当需要调整大小或者位置的时候,Qt 使用对应的布局管理器进行调整。
采用绝对定位的组件虽然可以禁止用户改变窗口大小来解决这个问题,但这也是不合时宜。布局定位完美的解决了使用绝对定位造成的缺陷。
Qt 提供的最常用的三种布局:
- QHBoxLayout:按水平方向从左到右布局;
- QVBoxLayout:按竖直方向从上到下布局;
- QGridLayout:在一个网格中进行布局,类似于 HTML 的 table;
系统提供的布局控件
系统提供了4个布局控件,但是使用起来不是非常的灵活,这里就不详细介绍了。

利用widget做布局
第二种布局方式是利用控件里的widget来做布局,在Containers中

可以在widget中对控件可以进行水平、垂直、栅格布局等操作。灵活运用弹簧的特性可使步局更加的美观,下面是一个登陆窗口,利用widget可以搭建出如下登陆界面:

下面演示一下上图中登录界面的搭建步骤:
- 新建工程——>打开ui文件:

- 打破布局,否则无法自定义控件布局:

- 添加label和line Edit:

- 修改label后,新建一个widget,并按图所示将label和line Edit都拖入widget中,再点击栅格布局:

- 点击栅格布局之后,会发现widget框的大小和labe两个控件大小不匹配,

需选中widget框,在属性栏中设置sizePOlicy垂直策略为fixed。效果如下所示:


- 添加两个按钮,双击修改为登录和退出,同样新建一个widget,并将两个按钮都拖入widget中,再点击栅格布局。并选中widget框,在属性栏中设置sizePOlicy垂直策略为fixed。:

- 选择这个大的widget框,将它设置为垂直布局(这一步很重要,否则下一步添加弹簧会不管用) :

- 添加弹簧,并设置一些控件之间弹簧的宽度:

- 最终效果如下所示:

补充
可以在对话框属性中设置登录对话框的大小为固定(只需将最大最小设置为相同即可)。也可以将输入密码框设置为保密输入,只需选中密码输入框,在属性中将返回模式echoMode设置为Password即可。

边栏推荐
- Zero basics of C language lesson 7: break & continue
- [scoi2016] lucky numbers
- C | analysis of malloc implementation
- Create your own cross domain proxy server
- Memory considerations under bug memory management
- [sdoi2013] forest
- ICML 2022 | limo: a new method for rapid generation of targeted molecules
- mysql配置提高数据插入效率
- DOS command
- FreeFileSync 文件夹比较与同步软件
猜你喜欢

ICML 2022 | LIMO: 一种快速生成靶向分子的新方法

I met the problem of concurrent programming in an interview: how to safely interrupt a running thread

爱可可AI前沿推介(6.26)

Stream常用操作以及原理探索

Hard (magnetic) disk (II)

Gartner 2022 Top Strategic Technology Trends Report

Wechat applet -picker component is repackaged and the disabled attribute is added -- above

Use of wangeditor rich text editor

Guruiwat rushed to the Hong Kong stock exchange for listing: set "multiple firsts" and obtained an investment of 900million yuan from IDG capital

Never use redis expired monitoring to implement scheduled tasks!
随机推荐
Bug STL string
爱可可AI前沿推介(6.26)
Insect operator overloaded a fun
On insect classes and objects
[proteus simulation] Arduino uno key start / stop + PWM speed control DC motor speed
Memory considerations under bug memory management
AGCO AI frontier promotion (6.26)
Design of PHP asymmetric encryption algorithm (RSA) encryption mechanism
array
[cqoi2015] task query system
A must for programmers, an artifact utools that can improve your work efficiency n times
创建一个自己的跨域代理服务器
Pytorch based generation countermeasure Network Practice (7) -- using pytorch to build SGAN (semi supervised GaN) to generate handwritten digits and classify them
Use of wangeditor rich text editor
Jenkins build prompt error: eacces: permission denied
Connection migration for DataGrid configuration
PHP非对称加密算法(RSA)加密机制设计
Linear basis count (k large XOR sum)
证券开户安全吗,有没有什么危险啊
Luogu p4513 xiaobaiguang Park