【Qt】桌面应用开发教程——布局 按钮组 容器 常用控件 消息事件机制_qt 如何按钮切换容器

本文是Qt桌面应用开发教程,详细讲解了布局管理、按钮组、容器、常用控件如QLabel和QLineEdit的使用,以及消息事件机制。重点介绍了动态布局的QHBoxLayout、QVBoxLayout和QGridLayout,以及QLabel显示文字、图片和动画的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

+ [8.3 事件分发函数event](#83_event_582)
+ [8.4 事件过滤器](#84__623)
+ [8.5 定时器事件](#85__661)

上一篇QMainWindow | 对话框

3、布局

所谓 GUI 界面,归根结底,就是一堆组件的叠加。我们创建一个窗口,把按钮放上面,把图标放上面,这样就成了一个界面。在放置时,组件的位置尤其重要。我们必须要指定组件放在哪里,以便窗口能够按照我们需要的方式进行渲染。这就涉及到组件布局定位的机制。

Qt 提供了两种组件布局定位机制:静态布局和动态布局。

  • 静态布局就是一种最原始的定位方法:给出这个组件的坐标和长宽值。

这样,Qt 就知道该把组件放在哪里以及如何设置组件的大小。但是这样做带来的一个问题是,如果用户改变了窗口大小,比如点击最大化按钮或者使用鼠标拖动窗口边缘,采用静态布局的组件是不会有任何响应的。这也很自然,因为你并没有告诉 Qt,在窗口变化时,组件是否要更新自己以及如何更新。或者,还有更简单的方法:禁止用户改变窗口大小。但这总不是长远之计。

  • 动态布局:你只要把组件放入某一种布局(layout),布局由专门的布局管理器进行管理。当需要调整大小或者位置的时候,Qt 使用对应的布局管理器进行调整。

动态布局解决了使用静态布局的缺陷。

Qt 提供的动态布局中以下三种是我们最常用的:

  • QHBoxLayout:按照水平方向从左到右布局;
  • QVBoxLayout:按照竖直方向从上到下布局;
  • QGridLayout:在一个网格中进行布局,类似于 HTML 的 table;

3.1 系统提供的布局控件

img
这4个为系统给我们提供的布局的控件,但是使用起来不是非常的灵活,第一个是垂直布局,第二个水平布局,第三个栅格布局,第四个表单布局。

3.2 利用widget做布局

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

img
在widget中的控件可以进行水平、垂直、栅格布局等操作,比较灵活。

再布局的同时我们需要灵活运用弹簧的特性让我们的布局更加的美观,必须达到可动态布局效果才能添加弹簧成功

image-20221027155230731

image-20221027160137965
最后一步就是,用户名和密码框没有对齐,我们需要全部打破布局,把用户名和密码抽出来排整理好

重新放到QWidget中栅格对齐,然后整体来一次垂直对齐,最后把弹簧加回去;

我们可以更改它们的策略,设置它们的占比为固定,也可以设置它们里距离窗口的间隙,处理图片用

image-20221027163718481
把windowTitle改为登录窗口,下面是一个登陆窗口,它们之间各占二分之一,利用widget可以搭建出如下登陆界面:

img
我们还可以设置窗口大小,不能最大化,把最大值和最小值改成一样

image-20221027164535795
在输入框我们不显示密码那就选择密码框QLineEdit找到echoMode属性改为passwdimage-20221027165002568默认是第一个正常,第二个不能输入,第四个是输入中显示密码,不在输入框就显示*

3.3 利用表单做布局

我们选择一个Qt模板为Qt设计师界面类

image-20221027170026540
然后选择Widget

image-20221027170351239
非常方便

image-20221027170612394

两类:静态、动态
	静态就是位置和大小不会跟着外部窗口变化而变化
	动态就是位置和大小会跟着外部窗口变化而变化

常用动态布局
	水平、垂直、栅格、表单布局
	推荐使用widget的自带的布局功能

使用弹簧来调整布局的位置,居中
栅格布
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值