QT之Layout类

这个类是用来布局的,它有各种各样既定风格的盒子,往这个盒子里添加控件,这些控件就会按照这个盒子的风格来找到自己的位置

举个例子,一个水平盒子往里面添加控件,是按照从左往右的顺序依次添加

QHBoxLayout layout;//首先创建一个水平盒子
layout.addStretch(1);//添加一根弹簧
layout.addWidget(&button);//添加一个按钮控件
layout.addSpacing(50);//增加50像素的留白
layout.addWidget(&edit);//添加一个编辑
layout.addStretch(1);

最后效果展示:

在这里插入图片描述

### Qt 布局系统简介 Qt 的布局管理器提供了一种简单而强大的机制来安排窗口部件(widgets),使得它们能够自动调整大小并适应不同的屏幕分辨率和设备方向。通过使用布局,开发者无需手动计算每个控件的位置和尺寸。 #### 创建水平和垂直布局 可以通过 `QHBoxLayout` 和 `QVBoxLayout` 来实现基本的水平和垂直排列。这些允许将多个子控件按顺序放置在一个容器中,并根据可用空间动态调整其大小[^1]。 ```python from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout app = QApplication([]) window = QWidget() layout = QVBoxLayout() # Create a vertical box layout. button1 = QPushButton("Top Button") button2 = QPushButton("Bottom Button") layout.addWidget(button1) # Add widgets to the layout. layout.addWidget(button2) window.setLayout(layout) # Set the layout on the application's window. window.show() app.exec_() ``` 上述代码展示了如何利用 `QVBoxLayout` 将两个按钮沿竖直方向堆叠起来。 #### 网格布局 (Grid Layouts) 当需要更复杂的布置方案时,比如表格形式的数据展示,则可以考虑采用网格布局 (`QGridLayout`)。这种布局方式允许多个组件被分配到特定行与列之中。 ```python from PyQt5.QtWidgets import QGridLayout, QLabel, QLineEdit grid_layout = QGridLayout() labels = ['Name:', 'Age:', 'Address:'] line_edits = [] for i, label_text in enumerate(labels): label = QLabel(label_text) line_edit = QLineEdit() grid_layout.addWidget(label, i, 0) # Place labels at column 0. grid_layout.addWidget(line_edit, i, 1) # Corresponding input fields placed next to them. line_edits.append(line_edit) # Attach this grid layout into main widget as before... ``` 这里定义了一个简单的表单输入区域,其中每一项都由一个标签加对应的编辑框组成。 #### 自动伸缩策略及其他特性 除了基础的方向控制外,还可以设置各个项目的拉伸因子(stretch factor),从而影响他们在剩余空白区域内所占比例;另外也存在诸如间距(spacing), 边距(margins)之的属性可供调节以优化整体外观效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值