Qt布局管理器(QHBoxLayout,QVBoxLayout)

news2024/11/25 14:52:55

文章目录

  • 布局管理器是什么
  • 使用代码添加布局管理器
    • QVBoxLayout
    • QHBoxLayout
  • 使用ui文件添加布局管理器
    • 布局管理器的嵌套


提示:以下是本篇文章正文内容,下面案例可供参考

布局管理器是什么

可以把一些组件按一定的次序排列,这就是布局管理器。
他可以自动排列窗口中的界面组件
窗口变化后自动更新界面组件。

使用代码添加布局管理器

QVBoxLayout

在这里插入图片描述
QVBoxLayout:按垂直的顺序排列组件

添加组件/其他的布局管理器:

addWidget(QWidget*);
addLayout(Layout*);

设置布局管理器管理指定窗口:

Widget->setLayout(Layout*);

设置组件和窗口一起变大变小:

QWidget->setSizePolicy();

大家可以查帮助文档,我现在列出一部分


QSizePolicy::Fixed

QSizePolicy::Minimum

QSizePolicy::Maximum

QSizePolicy::Preferred

QSizePolicy::Expanding

设置组件的间隔:

setSpacing(int)

设置组件的比例因子:

setStretch(int index,int stretch)

使用部分:

//构造函数:
Form::Form(QWidget *parent) :
    QWidget(parent),btn0(this),btn1(this),btn2(this),
    ui(new Ui::Form)
{
    ui->setupUi(this);
    
    QVBoxLayout *layout = new QVBoxLayout(this);
    
    btn0.setText("Button 0");
    btn1.setText("Button 1");
    btn2.setText("Button 2");

	btn0.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    
	layout->setSpacing(10);
    
    layout->addWidget(&btn0);
    layout->addWidget(&btn1);
    layout->addWidget(&btn2);
    
    setLayout(layout);
}

//头文件:
#ifndef FORM_H
#define FORM_H

#include <QWidget>
#include <QPushButton>

namespace Ui {
class Form;
}

class Form : public QWidget
{
    Q_OBJECT
    
    QPushButton btn0;
    QPushButton btn1;
    QPushButton btn2;

public:
    explicit Form(QWidget *parent = 0);
    ~Form();

private:
    Ui::Form *ui;

private slots:
};

#endif // FORM_H

QHBoxLayout

在这里插入图片描述
他和QVBoxLayout基本一致,在这我就不讲了

使用ui文件添加布局管理器

1、把下列的组件拖出,把组件放在里面
在这里插入图片描述

在这里插入图片描述

2、点击按钮,排序某个Widget
先添加组件
首先选中你要排序的Widget
然后点击下面的东西:

在这里插入图片描述
想要不用也是很简单,选中指定的Widget,点击打破布局。

布局管理器的嵌套

在这里插入图片描述
把QHbox放到QVbox中,组成一个网格布局。
代码如下:

//Widget,h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

    QPushButton btn0;
    QPushButton btn1;
    QPushButton btn2;
    QPushButton btn3;

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H


//Widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QVBoxLayout>
#include <QHBoxLayout>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    QVBoxLayout *layout = new QVBoxLayout(this);
    QHBoxLayout *hbox1 = new QHBoxLayout(this);
    QHBoxLayout *hbox2 = new QHBoxLayout(this);

    btn0.setText("Button 0");
    btn1.setText("Button 1");
    btn2.setText("Button 2");
    btn3.setText("Button 3");

    btn0.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    btn3.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    layout->addLayout(hbox1);
    layout->addLayout(hbox2);

    hbox1->addWidget(&btn0);
    hbox1->addWidget(&btn1);
    hbox2->addWidget(&btn2);
    hbox2->addWidget(&btn3);

    setLayout(layout);
}

Widget::~Widget()
{
    delete ui;
}

效果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

反欺诈指南|网购平台如何保障公平交易

网购平台是社会零售重要的组成部分。国家统计数据显示&#xff0c;2021年&#xff0c;全国实物商品网上零售额达10.8万亿元&#xff0c;占社会消费品零售总额的比重为24.5%&#xff0c;对社会消费品零售总额增长的贡献率为23.6%。 网购平台促成买卖双方交易而建立的平台&#…

OpenBMI运动想象--认知科学实践设计

目录 一、简要介绍 &#xff08;一&#xff09;材料与准备工具 数据集下载 工具箱下载 参考 &#xff08;二&#xff09;OpenBMI工具箱介绍 &#xff08;三&#xff09;数据集详细介绍 数据拆分 数据解读 二、预处理 &#xff08;一&#xff09;目标 &#xff08;二&#xff09…

Linux安装和入门

文章目录1、课程介绍2、为什么需要Linux3、Linux简介3.1、什么事Linux3.2、Linux优点3.3、常见的Linux系统3.4、小结4、虚拟机安装4.1、引入4.2、常见的虚拟机软件4.3、安装vmware4.4、vmware常用操作4.4.1、全局配置虚拟机(Linux系统)存储位置4.4.2、虚拟机操作5、CentOS安装5…

Python中的消息框对话框tkinter.messagebox

介绍&#xff1a;使用&#xff1a;选择消息框的模式:提示消息框:【返回”ok”】消息警告框【返回”ok”】&#xff1a;错误消息框【返回”ok”】&#xff1a;对话框&#xff1a;询问确认对话框【返回值&#xff1a;yes/no】确认/取消对话框【返回值&#xff1a;True/False】是/…

【Java集合】Set接口及系列子类HashSet等

文章目录Set接口> Set 接口和常用方法> Set接口实现类 - HashSetHashSet 底层机制&#xff08;HashMap&#xff09;> Set接口实现类 - LinkedHashSetSet接口 Set 接口介绍&#xff1a; 无序&#xff08;添加和取出的顺序不一致&#xff09;&#xff0c;没有索引&…

交叉开发环境搭建

ubuntu网络环境搭建 配置网络环境有很多种方法&#xff0c;可以用命令行也可以用图形化界面。ip可以是静态的也可以是动态的。当然要是用SSH访问的话要配置成静态的&#xff0c;但是用校园网的话&#xff0c;又要是动态的&#xff0c;这里就不详细说了。 我们配置ubuntu是为了能…

Java学习路线图(2023版,视频已更新)

PS&#xff1a;注意收藏&#xff0c;此套路线图会不定期更新!点这里跳转&#xff1a;2023年Java程序员学习路线图入门&#xff1a; Java SE基础 → Java Web(含数据库H5jsvue)中级&#xff1a; Maven → Git → SSM框架 → MybatisPlus → Spring Boot→ 《传智健康》项目实战 …

北大硕士LeetCode算法专题课-基础算法查找

算法专题系列&#xff1a; 北大硕士LeetCode算法专题课---算法复杂度介绍_骨灰级收藏家的博客-CSDN博客 北大硕士LeetCode算法专题课-基础算法之排序_骨灰级收藏家的博客-CSDN博客 查找算法 查找算法也可以叫搜索算法。 查找算法就是从一个有序数列中找出一个特定的数&am…

66.物体检测算法:区域卷积神经网络(R-CNN)系列

1. R-CNN ps&#xff1a;在计算机视觉中&#xff0c;深度学习之前&#xff0c;分类器用的是SVM 2. 兴趣区域&#xff08;RoI&#xff09;池化层 目的是为了让每个锚框都可以变成一个自己想要的形状。 3. Fast RCNN 具体步骤如下&#xff1a; 对整张图片用CNN抽特征&#xff…

IT服务管理(ITSM)是什么?ITSM工具哪个好用

什么是IT服务管理&#xff08;ITSM&#xff09; IT 服务管理 (ITSM) 包含一组策略和实践&#xff0c;这些策略和实践可用于为最终用户实施、交付和管理 IT 服务&#xff0c;以满足最终用户的既定需求和企业的既定目标。 在此定义中&#xff0c;最终用户可以包含员工、客户或业…

一网打尽链表的经典OJ题!链表必考笔试题第一弹

目录 0.前言 1. 移除链表元素 2. 反转链表 2.1 方法一(遍历反转链接关系) 2.2 方法二(节点头插构造新链表) 3.链表的中间节点 4. 链表中倒数第k个节点 5. 总结 0.前言 本文所有代码都已传入gitee&#xff0c;可自取 3链表OJ题p1 onlookerzy123456qwq/data_structu…

使用Electron创建桌面程序,从创建到打包

在桌面程序中&#xff0c;使用C#语言可以创建winform和WPF程序&#xff0c;他们2个在Windows中都非常的优秀&#xff0c;还有就是使用QT开发桌面&#xff0c;可以跨平台开发&#xff0c;这三种都是比较“正规”的&#xff0c;而Electron是使用框架开发桌面程序的&#xff0c;还…

JDBC核心技术_第9章:Apache-DBUtils实现CRUD操作

目录9.1 Apache-DBUtils简介9.2 主要API的使用9.2.1 DbUtils9.2.2 QueryRunner类9.2.3 ResultSetHandler接口及实现类9.1 Apache-DBUtils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库&#xff0c;它是对JDBC的简单封装&#xff0c;学习成本极低&#xff0…

硬件设备上也能安全运行小程序

当前&#xff0c;在百度、支付宝、今日头条等各大巨头都把持小程序技术尚未开放的情况下&#xff0c;市面上可商用的小程序技术选择面非常狭窄。与此同时&#xff0c;企业仍希望实现 “一次开发&#xff0c;多端运行”&#xff0c;从而真正达到降本增效。今天为大家分享一下&am…

【c++复习梳理】--基础入门语法

目录 1.函数重载 1.1 函数重载概念 1.2C支持函数重载的原理--名字修饰(name Mangling) 2.引用 2.1 引用概念 2.2 引用特性 2.3 常引用 2.4 使用场景 2.4.1 做参数 2.4.2 做返回值 2.5 传值、传引用效率比较 2.5.1 传值、传引用效率比较--做参数返回 2.5.2 值和引用…

Linux--进程地址空间在线程方面的补充--页表的操作模式 0109

上一篇有关地址空间的博客 (入门自用)--Linux--程序地址空间--程序的创建--0907-0913_Gosolo&#xff01;的博客-CSDN博客 很久之前写的&#xff0c;最近会完善。 1. 进程地址空间在线程方面的补充 线程由于资源都是从主进程直接拿来的&#xff0c;所以他们的pcb结构体中的地址…

如何让 Shell 提示符更酷炫

使用远程终端时&#xff0c;默认的命令行提示符格式已经能满足大部分用户需求了&#xff0c;但有时我们希望提示符看起来更直观、优雅、酷炫、美观&#xff0c;可以从中直接得到我们想要的信息&#xff0c;而且清晰分明。本文就详细讲解一下如何让 Shell 提示符更酷炫&#xff…

13_9、Java的IO流之NIO.2中Path、Paths、Files类的使用

一、引入1、Java NIO (New IO&#xff0c;Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API&#xff0c;可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的&#xff0c;但是使用的方式完全不同&#xff0c;NIO支持面向缓冲区的(IO是面向流的)、基于通道的…

cinder对接nfs后端存储

1.部署配置流程 1.安装nfs服务端 可以新增一个节点&#xff0c;或直接使用计算节点&#xff0c;因为存储节点上已经有lvm了这里直接使用计算节点来安装 yum install nfs-utils -y2.修改配置 vi /etc/exports # 要共享的目录 允许的网络1(操做权限) 允许的网络2(操做权限) …

Mybatis源码分析(八)MapperMethod的Select分析

目录一 Select1.1 参数的对应解析convertArgsToSqlCommandParam1.2 ID获取对应的MappedStatement1.3 MappedStatement交给执行器执行1.4 根据参数获取BoundSql1.5 SqlNode节点的解析1.5.1 MixedSqlNode1.5.2 IfSqlNode1.5.3 StaticTextSqlNode1.5.4 TextSqlNode1.6 执行器执行查…