Qt常用控件之Layout总篇

ops/2025/3/19 22:01:36/

Layout总篇

1.Layout介绍

Layout 是一类布局管理器,它能够将 Layout 内部的控件都按照某种方式布局,简单高效地使代码更美观。在 Qt 中内置的 layout 有四种:QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)、QFormLayout(表单布局)。

在代码中创建的 layout,本质上就只创建了一个 layout。但在 ui 中创建的 layout,本质上是先创建一个 widget,再在这个 widget 中创建一个 layout。这两种方法的直观区别是:代码创建的 layout 会随着窗口尺寸变化而变化,layout 内部的控件也会随之变化;但 ui 创建的 layout 则是固定大小和位置,自然 layout 内部的控件也不会有任何变化。


注意,如果在一个 layout 中某些控件左右可以拉伸,但上下不可拉伸,或上下可以拉伸,左右不可拉伸,这是由该控件的 sizePolicy 属性造成的,sizePolicy 请看->Qt常见控件属性使用方法

2. Layout控件种类

  1. 垂直布局QVBoxLayout
  2. 水平布局QHBoxLayout
  3. 网格布局QGridLayout
  4. 表单布局QFormLayout

3. Layout嵌套布局

嵌套使用 layout 布局可以使用 addLayout() 完成。注意,在代码中调用 addLayout() 的位置会影响窗口的最终布局:

#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>
#include <QLayout>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPushButton* button1=new QPushButton("pushButton1");QPushButton* button2=new QPushButton("pushButton2");QPushButton* button3=new QPushButton("pushButton3");QPushButton* button4=new QPushButton("pushButton4");QPushButton* button5=new QPushButton("pushButton5");QVBoxLayout* Vlayout=new QVBoxLayout(this);QHBoxLayout* Hlayout=new QHBoxLayout(this);Hlayout->addWidget(button2);Hlayout->addWidget(button3);//Vlayout->addLayout(Hlayout);Vlayout->addWidget(button1);Vlayout->addWidget(button4);Vlayout->addLayout(Hlayout);Vlayout->addWidget(button5);//Vlayout->addLayout(Hlayout);}Widget::~Widget()
{delete ui;
}

Layout1

不同的调用顺序,会影响最终布局。


http://www.ppmy.cn/ops/167119.html

相关文章

JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案

JetBrains&#xff08;全家桶: IDEA、WebStorm、GoLand、PyCharm&#xff09; 2024.3 2025 版免费体验方案 前言 JetBrains IDE 是许多开发者的主力工具&#xff0c;但从 2024.02 版本起&#xff0c;JetBrains 调整了试用政策&#xff0c;新用户不再享有默认的 30 天免费试用…

定义模型生成数据表

1. 数据库配置 js import { Sequelize, DataTypes } from sequelize; // 创建一个 Sequelize 实例&#xff0c;连接到 SQLite 数据库。 export const sequelize new Sequelize(test, sa, "123456", { host: localhost, dialect: sqlite, storage: ./blog.db })…

使用 5W2H 分析法学习 C 语言理论知识

使用 5W2H 分析法学习 C 语言理论知识 1. What(什么):学习什么? 2. Why(为什么):为什么要学习? 3. Where(在哪里):在哪里学习? 4. When(什么时候):什么时候学习? 5. Who(谁):向谁学习? 6. How(如何):如何学习? 7. How much(多少):学习到什么程度?…

C语言从入门到精通

C语言从入门到精通 1.1.1程序语言简述 在介绍C语言的发展历程之前&#xff0c;先对程序语言进行大概的了解。 1.机器语言 机器语言是低级语言&#xff0c;也称为二进制代码语言。计算机使用的是由0和1组成的二进制数组成的串指令来表达计算机操作的语言。机器语言的特点是&…

C#的简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式是一种创建型设计模式&#xff0c;主要将对象的创建和使用分离&#xff0c;使得系统更加灵活和可维护。常见的工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;以下是 C# 实现的三个案例&#xff1a; 简单工厂模式 简单工厂模式通过一个工厂类来创建…

智慧加油站小程序数据库设计文档

智慧加油站系统 - 数据库与API设计文档 1. 数据库设计 1.1 ER模型 系统的核心实体关系如下&#xff1a; 用户(User) ---< 订单(Order) ---< 加油记录(RefuelRecord)| | || | vv v …

Qt Graphics View

Graphics View框架是用来处理大量2D图形对象的&#xff0c;适合需要高效管理和交互的场景&#xff0c;比如绘图软件、地图编辑或者游戏。它和QPainter的区别在于&#xff0c;Graphics View提供了更高级别的对象管理&#xff0c;而QPainter更偏向于直接绘制。 一、核心组件 ‌Q…

Ubuntu24.04安装ROS2 Jazzy

ROS2有多个版本&#xff0c;Jazzy是Ubuntu24.04目前支持的ROS版本&#xff0c;而之前的humble,noetic等版本是不在该版本支持的&#xff0c;所以一定不能安装错版本。 1、版本介绍 1.1、支持的软硬件设备 Ubuntu 24.04 (Noble): amd64 和 arm64 Windows 10 (Visual Studio 2…