[QT编程系列-9]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自动布局

2023-10-29

目录

3. QT窗体设计

3.7 自动布局

3.7.1 自动布局

3.7.2 在主窗口中自动布局

3.7.3 在自动布局容器中自动布局

3.7.4 在widget中自动布局

3.7.5 自动布局工件


3. QT窗体设计

3.7 自动布局

3.7.1 自动布局

 在QT中,自动布局是一种灵活而强大的方式来管理和排列界面中的控件。

QT提供了多种自动布局的类,包括QVBoxLayout、QHBoxLayout、QGridLayout和QFormLayout等。

这里是一些常用的QT自动布局类及其简单用法:

  1. QVBoxLayout(垂直布局):将控件按垂直方向依次排列。
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>

QWidget *widget = new QWidget;
QVBoxLayout *layout = new QVBoxLayout(widget);
QPushButton *button = new QPushButton("按钮");
QLineEdit *lineEdit = new QLineEdit;

layout->addWidget(button);
layout->addWidget(lineEdit);

widget->setLayout(layout);

  1. QHBoxLayout(水平布局):将控件按水平方向依次排列。
#include <QHBoxLayout>
#include <QPushButton>
#include <QLineEdit>

QWidget *widget = new QWidget;
QHBoxLayout *layout = new QHBoxLayout(widget);
QPushButton *button = new QPushButton("按钮");
QLineEdit *lineEdit = new QLineEdit;

layout->addWidget(button);
layout->addWidget(lineEdit);

widget->setLayout(layout);

  1. QGridLayout(网格布局):将控件按照行和列的网格进行排列。
#include <QGridLayout>
#include <QPushButton>
#include <QLineEdit>

QWidget *widget = new QWidget;
QGridLayout *layout = new QGridLayout(widget);
QPushButton *button1 = new QPushButton("按钮1");
QPushButton *button2 = new QPushButton("按钮2");
QLineEdit *lineEdit = new QLineEdit;

layout->addWidget(button1, 0, 0);
layout->addWidget(button2, 0, 1);
layout->addWidget(lineEdit, 1, 0, 1, 2);  // 占据两列

widget->setLayout(layout);

  1. QFormLayout(表单布局):将标签和控件成对进行排列。
#include <QFormLayout>
#include <QLabel>
#include <QLineEdit>

QWidget *widget = new QWidget;
QFormLayout *layout = new QFormLayout(widget);
QLabel *label1 = new QLabel("标签1");
QLabel *label2 = new QLabel("标签2");
QLineEdit *lineEdit1 = new QLineEdit;
QLineEdit *lineEdit2 = new QLineEdit;

layout->addRow(label1, lineEdit1);
layout->addRow(label2, lineEdit2);

widget->setLayout(layout);

在QT中,有多种方法可以实现自动布局,包括使用布局管理器、使用样式表和使用网格布局等。下面是一些常用的QT自动布局方法:

  1. 使用布局管理器:QT提供了多种布局管理器,如QHBoxLayout、QVBoxLayout、QGridLayout和QFormLayout等。您可以创建一个布局管理器对象,并将控件添加到布局中,布局管理器会根据设定的规则自动调整和排列控件的位置和大小。
#include <QHBoxLayout>
#include <QPushButton>
#include <QLineEdit>

QWidget *widget = new QWidget;
QHBoxLayout *layout = new QHBoxLayout(widget); // 创建水平布局管理器

QPushButton *button = new QPushButton("按钮");
QLineEdit *lineEdit = new QLineEdit;

layout->addWidget(button); // 将按钮添加到布局中
layout->addWidget(lineEdit); // 将文本框添加到布局中

widget->setLayout(layout); // 将布局设置给窗口部件

  1. 使用样式表:QT提供了丰富的样式表功能,您可以使用样式表设置控件的布局属性,实现自动布局的效果。通过设置控件的样式表属性,可以控制其大小、位置、对齐方式等。
QPushButton *button = new QPushButton("按钮");
button->setStyleSheet("width: 100px; height: 30px;"); // 设置按钮的宽度和高度

  1. 使用网格布局:QT的QGridLayout是一种灵活的布局管理器,适用于将控件按照行和列的网格进行排列。您可以使用addWidget()、addLayout()和addSpacerItem()等方法将控件添加到网格布局中,并通过设置行号和列号来控制它们的位置。
#include <QGridLayout>
#include <QPushButton>
#include <QLineEdit>

QWidget *widget = new QWidget;
QGridLayout *layout = new QGridLayout(widget); // 创建网格布局管理器

QPushButton *button1 = new QPushButton("按钮1");
QPushButton *button2 = new QPushButton("按钮2");
QLineEdit *lineEdit = new QLineEdit;

layout->addWidget(button1, 0, 0); // 将按钮1添加到第一行第一列
layout->addWidget(button2, 0, 1); // 将按钮2添加到第一行第二列
layout->addWidget(lineEdit, 1, 0, 1, 2); // 将文本框添加到第二行,跨越两列

widget->setLayout(layout); // 将布局设置给窗口部件

3.7.2 在主窗口中自动布局

3.7.3 在自动布局容器中自动布局

3.7.4 在widget中自动布局

 3.7.5 自动布局工件

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[QT编程系列-9]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自动布局 的相关文章

随机推荐

  • USRP B210常用软件安装

    系统需求 硬件配置 intel i5或以上 USB3 0接口 树莓派也可以 操作系统 ubuntu 20 04 ubuntu 18 04环境配置有些差异 如果按照这里的命令操作可能会出问题 可以用虚拟机吗 当然没问题 虚拟机是多好的发明 等
  • Flutter实现CombineExecutor进行多个异步分组监听,监听第一个异步执行的开始和最后一个异步执行结束时机。

    1 场景 我们在调用接口时 很多时候会同时调用多个接口 接口都是异步执行 我们很难知道调用的多个接口哪个会最后执行完成 我们有时候需要对最后一个接口执行完成的时机监听 所以基于该需求 设计了CombineExecutor 对类似的需求进行监
  • [pytest源码5]-pluggy深挖调用逻辑

    前言 本篇将详细分析如何通过PluginManager hook调用plugin实现 个人拙见 有错请各位指出 如果的我的文章对您有帮助 不符动动您的金手指给个Star 予人玫瑰 手有余香 不胜感激 GitHub pytest pluggy
  • PostgreSQL启动失败:本地计算机上的postgresq-x64-11服务启动后停止。某些服务或程序使用时将自动停止。

    PostgreSQL启动失败 本地计算机上的postgresq x64 11服务启动后停止 某些服务或程序使用时将自动停止 问题描述 安装PostgreSQL数据库后 启动服务时提示 本地计算机上的postgresq x64 11服务启动后
  • 云存储技术分析和架构框架设计

    摘要 随着互联网类新兴业务的激增 业务数据快速增长 云存储技术应运而生 本文深入剖析了云存储通用框架 硬件架构以及其底层原理这三个技术层面的差异性 为云存储架构框架设计提供了理论依据 再结合细分行业及其业务应用场景的差异性需求 最终确定了满
  • 小程序充值功能总结

    1 功能介绍 1 1 充值 功能描述 拉起小程序的支付组件 1 1 1 实现代码 1 1 2 注意要点 充值的关键点是openId和appId能匹配上 因为公众号和小程序生成的openId是不一样的 1 1 3 报错提示 1 request
  • 深度学习面试题总结-2022总结

    背景 社招 我估摸着校招聘一样会问 主要方向 自动驾驶 祝愿每一个求职者都可以顺利 谢谢大家的支持 我刷题的思路就是repeat repeat repeat 背 背 背 背着背着就懂了 刷的dp 二叉树目前一题没考 好苦 地平线1面 自我介
  • 用Android Studio制作一个简易的计算器,Android开发经验的有效总结

    首先建立按钮 这只是单单的建议按钮 连接按钮的代码在底下 public class MainActivity extends AppCompatActivity implements View OnClickListener private
  • spring boot + sql server大数据量批量新增

    先发出来 注释慢慢完善 获取类中所有属性注解 TableId和 TableField param instance return throws NoSuchFieldException public static Map
  • 安装ubuntu22.04系统,配置国内源以及ssh远程登录

    一 安装ubuntu22 04系统 原文连接 Ubuntu操作系统22 04版本安装教程 VMware虚拟机 wx63f86e949a470的技术博客 51CTO博客 1 点击界面左侧的开启此虚拟机 即可进入Ubuntu操作系统安装界面 点
  • Maven:搭建私服Nexus

    Nexus 安装 下载地址 小诀窍 使用迅雷下载比直接用浏览器下载快很多 https download sonatype com nexus 3 latest unix tar gz 上传 解压 上传到 Linux 系统 解压后即可使用 不
  • 【Blog 5】软件构造落幕,计算人生启程

    经历了7周的学习 软件构造课落下帷幕 但我知道 这对我而言 才只是一个开始 最后几章介绍面向可复用性 可维护性 正确性与健壮性的软件构造的技术 过程等等 看似是不同的角度 其实内部联系密切 尤其是关于继承 委托 SOLID原则等有关知识 都
  • FindObjectsOfType返回场景中所有该类型的组件集合

    做一个简单的demo 场景中准备七个空物体 层级关系如下 查找场景中所有出现的gggg组件 然后把test这个类挂在MainCamera这个物体上 然后运行场景 控制台打印结果为 3 总结 FindObjectsOfType返回场景中所有改
  • 测试产品说明书

    本篇文档是来自csdn 我觉得比较好 于是就收录了 尽管测试产品说明书不是所以软测人员都有机会去做 但还是值得一谈的 如果有幸在项目早期介入软件开发 并有一定的话语权的话 就相当有用了 在软件开发初始阶段发现软件缺陷将可能为项目节省大笔的开
  • 数据结构:队列Queue详解

    文章目录 一 队列的概念和特点 二 队列的使用 三 队列的简单实现 四 循环队列 一 队列的概念和特点 队列 只允许在一端进行插入数据操作 在另一端进行删除数据操作的特殊线性表 进行插入操作的一端称为队尾 删除操作的一端称队头 入队列 进行
  • 管理系统的设计与实现方法总结

    项目总结 1 项目开发背景 目前 国内外毕业论文选题一般采用两种方式 一种将毕业设计存在软盘上交 另一种则存放到教师的电脑上的一个共享目录内 但这两种方法都有各自的弊端 前一种方法不方便携带 速度慢 容量小 易损坏 后一种方法虽然解决了软盘
  • 关于互联网思维与技术团队的一些总结

    2017 7 4更 真正在底层工作的人员 跟站在高层的人看到的东西都是两个东西 真正的从底层走到高层才能看的更精准 同样的 从底层走到高层的人 也没有一直处在高层的远见与见识 我信奉公司处于什么阶段用什么样的人 没必要一开始就弄高精尖的人和
  • 基于Docker的Hadoop集群搭建

    基于Docker的Hadoop集群搭建 本文为在阿里云服务器上基于docker的Hadoop集群搭建 安装思路为 安装docker gt 运行docker导入ubuntu镜像 gt 运行ubuntu系统 gt 在系统中配置好单个节点 gt
  • FreeMarker整合Spring 3

    开发环境 System Windows WebBrowser IE6 Firefox3 JavaEE Server tomcat5 0 2 8 tomcat6 IDE eclipse MyEclipse 8 开发依赖库 JavaEE5 Sp
  • [QT编程系列-9]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自动布局

    目录 3 QT窗体设计 3 7 自动布局 3 7 1 自动布局 3 7 2 在主窗口中自动布局 3 7 3 在自动布局容器中自动布局 3 7 4 在widget中自动布局 3 7 5 自动布局工件 3 QT窗体设计 3 7 自动布局 3 7