qt 布局管理和空间管理 Layouts Spacers

2023-10-20 00:40

本文主要是介绍qt 布局管理和空间管理 Layouts Spacers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

qt 布局管理和空间间隔

 控件名:

  • Vertical Layout:垂直布局
  • Horizontal Layout:横向水平布局
  • Grid Layout:网格(栅格)布局
  • Foram Layout:表单布局
  • Horizontal Spacer:水平间隔
  • Vertical Spacer:垂直间隔

应用举例:

Grid Layout:网格(栅格)布局:

Grid Layout是Qt中一种布局方式,可以让控件按照网格形式布局。它的特点是简单易懂、灵活性强,适用于各种场景。

在Grid Layout中,每个控件被分配到一个单元格中,并且所有单元格具有相同的大小。可以通过设置行数和列数来确定网格的大小。此外,还可以通过合并或拆分单元格来创建更复杂的布局。   

此控件划分为行和列组成,能够将控件放入一个网状栅格当中,每一个控件占一格或多行多列

常见方法:

1. addWidget():将控件添加到网格布局中的指定单元格。

2. setSpacing():设置行和列之间的空隙大小。

3. setColumnStretch()和setRowStretch():设置行和列的扩展比例,可用于自适应布局。

4. setAlignment():设置单元格内的控件对齐方式。

5. setRowMinimumHeight()和setColumnMinimumWidth():设置行和列的最小高度和宽度。

6. setRowMaximumHeight()和setColumnMaximumWidth():设置行和列的最大高度和宽度。

7. setHorizontalSpacing()和setVerticalSpacing():分别设置水平和垂直方向上的空隙大小。

8. setContentsMargins():设置网格布局的边界,可以用于调整布局和控件之间的距离。

9. removeWidget():从网格布局中移除一个控件。

10. itemAtPosition():获取指定单元格位置上的控件。

11. rowCount()和columnCount():获取网格布局的行数和列数。

12. takeAt():从网格布局中移除并返回指定索引处的控件。

widget.h文件  

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include<QGridLayout>  //网格控件头文件
#include<QLabel> //标签
#include<QPushButton> //命令按钮头文件
class Widget : public QWidget
{Q_OBJECT
public:Widget(QWidget *parent = nullptr);~Widget();QGridLayout *pGrid_layouts;  //声明网格控件QPushButton *button1;   //声明命令按钮控件QPushButton *button2;QPushButton *button3;QPushButton *button4;
};
#endif // WIDGET_H

widget.cpp 

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{button1 = new QPushButton(this);  //实现命令按钮控件button1->setText("第一区:顶部菜单栏选项");  //更改控件1名字button1->setFixedHeight(100);        //设置控件1 高度button1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); //控制控件在layout里面大小变化的属性//expanding:窗口会在布局中,以一种“所谓的最佳尺寸”作为缺省大小,然后会""“尽可能多地”、“主动地”占据占据多余的空间。button2 = new QPushButton(this);button2->setText("第二区:侧边栏选项");button2->setFixedWidth(120); //设置固定大小的宽度button2->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button3 = new QPushButton(this);button3->setText("第三区:底部选项");button3->setFixedHeight(100); //设置高度button3->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);button4 = new QPushButton(this);button4->setText("第四区:子窗口选项");button4->setFixedHeight(100); //设置高度button4->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);pGrid_layouts =new QGridLayout(); //创建网格控件pGrid_layouts->setContentsMargins(0,0,0,0); //设置控件layout整体左上右下的外边距,主要方便布局周围进行使用//pGrid_layouts->setSpacing(200); //表示各个控件之间的上下间距pGrid_layouts->setMargin(50); //表示控件与窗体的左右边距// 显示位置// addWidget(参数1,参数2,参数3,参数4,参数5,参数6)/*1:我要插入的子布局对象2:插入的开始行3:插入的开始列4:占用的行数5:占用的列数6:指定对齐方式*/pGrid_layouts->addWidget(button1,0,1);//添加控件1到layout里 pGrid_layouts->addWidget(button2,0,0,3,1); //添加控件2到layou里0,0的位置 占3行 1列 添加的内容要在创建网格之后pGrid_layouts->addWidget(button3,2,1);pGrid_layouts->addWidget(button4,1,1);setLayout(pGrid_layouts); //设置出布局
}
Widget::~Widget()
{
}

效果:

Foram Layout:表单布局

Qt中的Form Layout是一种用于构建表单界面的布局,它可以自动调整控件的大小和位置,使得表单的显示更加美观和整齐。Form Layout在Qt Designer中也是一个常见的布局工具。以下是Form Layout的一些特点:

  1. 灵活性:Form Layout可以很容易地实现不同尺寸和布局的表单控件。

  2. 易用性:Form Layout具有良好的可视化界面和简洁的代码,易于使用和维护。

  3. 自适应性:Form Layout支持窗口大小自适应,当用户调整窗口大小时,布局会自动重新计算控件的大小和位置。

  4. 可定制性:Form Layout允许用户设置控件之间的间距、对齐方式、文本标签等,以满足不同的需求。

在Qt中使用Form Layout,通常需要以下步骤:

  1. 创建一个QWidget或QDialog,并使用setWindowTitle()方法设置窗口标题。

  2. 创建一个QFormLayout对象,并将其设置为QWidget或QDialog的布局。

  3. 使用QLabel和QLineEdit等控件创建表单项,使用addRow()方法将它们添加到QFormLayout中。

  4. 调用QWidget或QDialog的show()方法显示窗口。

常见方法:

1. addRow():添加一行控件,包括一个标签和一个输入控件。
2. setLabelAlignment():设置标签的对齐方式。
3. setFieldGrowthPolicy():设置输入控件的扩展策略,可以选择 Fixed、Expanding 或 AllExpanding。
4. setFormAlignment():设置整个表单的对齐方式。
5. setSpacing():设置控件之间的间隔距离。
6. itemAt():获取指定位置的控件对象。
7. rowCount():获取当前表单中控件的行数。
8. columnCount():获取当前表单中控件的列数。

使用 QFormLayout 可以方便地实现输入表单等功能。

widget.h 文件 

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
};
#endif // WIDGET_H

widget.cpp 文件

#include "widget.h"
#include<QFormLayout>
#include<QLineEdit>Widget::Widget(QWidget *parent): QWidget(parent)
{setFixedSize(250,200);//创建表单布局指针QFormLayout *alayout = new QFormLayout(this);QLineEdit *le1 = new QLineEdit(); //输入学号QLineEdit *le2 = new QLineEdit(); //输入姓名QLineEdit *le3 = new QLineEdit(); //输入学校alayout->addRow("学号",le1);alayout->addRow("姓名",le2);alayout->addRow("学校",le3);alayout->setSpacing(8);  //设置控件上下边距//wrapallrows 将标签显示在单行编辑框的上面//alayout->setRowWrapPolicy(QFormLayout::WrapAllRows);//当标签和单选编辑框,将标签显示在同一行。alayout->setRowWrapPolicy(QFormLayout::WrapLongRows);alayout->setLabelAlignment(Qt::AlignLeft); //设置标签对其方式 左对齐}Widget::~Widget()
{
}

效果:

这篇关于qt 布局管理和空间管理 Layouts Spacers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243480

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点