Qt之格栅布局(QGridLayout)控件填满整个单元格

Qt专栏:http://t.csdnimg.cn/GQN1M

目录

1.现象1

2.解决方案

3.现象2

4.解决方案

5.总结


1.现象1

        今天在用QGridLayout布局的时候,添加到布局的QWidget有文本框、标签、组合框和按钮等等,布局两列,通过下面的方式添加进去的:

QGridLayout* pGridLayout = new QGridLayout(this);
QLabel* pLabel1 = new QLabel("1111111", this);
pGridLayout->addWidget(pLabel1, 0, 0, Qt::AlignLeft);
QLineEdit* pEdit1 = new QLineEdit(this);
pGridLayout->addWidget(pEdit, 0, 1, Qt::AlignLeft);

发现在窗口拉伸的时候,pEdit 不会填满第0行1列的位置,右边有空隙。

2.解决方案

        最初还以为是pGridLayout 的margin所致,发现setContentsMargins也没有用;于是仔细查看Qt的官方文档:

 翻译一下就是:

        将给定的小部件添加到行、列的单元格网格中。默认情况下,左上角的位置为(0,0)。对齐方式由参数alignment指定。默认对齐方式为0,这意味着小部件将填充整个单元格。

        恍然大悟,不能设置QGridLayout的对齐方式,就是addWiget的最后一个参数不能填写,于是改为:

pGridLayout->addWidget(pEdit, 0, 1);

 拖动窗口改变大小,pEdit可以填满整个窗口了。

3.现象2

  同样在上面的基础上,又增加一个QComboBox,代码如下图所示:

QLabel* pLabel2 = new QLabel("2222222", this);
pGridLayout->addWidget(pLabel2, 1, 0, Qt::AlignLeft);
QComboBox* pComboBox = new QComboBox(this);
pGridLayout->addWidget(pComboBox, 1, 1);

 发现在窗口拉伸的时候,pComboBox 不会填满第1行1列的位置,左边有空隙。

4.解决方案

联想到是不是pComboBox本身自己没有填满窗口,于是查看资料,找到QWidget设置改变窗口大小函数setSizePolicy,函数定义为:

void QWidget::setSizePolicy(QSizePolicy::Policy horizontal, QSizePolicy::Policy vertical)

QSizePolicy的介绍为:

解释为:

QSizePolicy::Policy。策略。描述了构造QSizePolicy时使用的各种尺寸调整类型。

Fixed:size固定为QWidget::sizeHint()。
Minimum:size不能小于 sizeHint() 提供的大小。
Maximum:size不能大于 sizeHint() 提供的大小。
Preferred:最佳size为 sizeHint()。
Expanding:sizeHint()为推荐的size,但尽可能地获得更大的空间。
MinimumExpanding:sizeHint()是最小的size,但尽可能地获得更大的空间。
Ignored:sizeHint()被忽略。小部件将获得尽可能多的空间。

于是代码修改为:

QLabel* pLabel2 = new QLabel("2222222", this);
pGridLayout->addWidget(pLabel2, 1, 0, Qt::AlignLeft);
QComboBox* pComboBox = new QComboBox(this);
pComboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
pGridLayout->addWidget(pComboBox, 1, 1);

拖动窗口改变大小,pComboBox可以填满整个窗口了。

5.总结

        使用QGridLayout可以轻松创建灵活的网格布局,适用于多种类型的界面。它提供了方便和强大的方式来管理和调整子部件的位置和大小,并且支持灵活的行和列布局控制。遇到问题,除了大还要仔细阅读QT的官方文档之外,还需要大胆的发散性思维,假设求证。只有这样才能提高我们的编码水平。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Edge-TTS:微软推出的,免费、开源、支持多种中文语音语色的AI工具

项目地址:rany2/edge-tts: Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key (github.com) Edge-TTS是由微软推出的文本转语音Python库,通过微软Azure Cognitive Services转化文…

计算机网络——OSI网络层次模型

计算机网络——OSI网络层次模型 应用层表示层会话层传输层TCP和UDP协议复用分用 网络层数据链路层物理层OSI网络层次模型中的硬件设备MAC地址和IP地址MAC地址IP地址MAC地址和IP地址区别 OSI网络层次模型通信过程解释端到端点到点端到端和点到点的区别 我们之前简单介绍了一下网…

在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】

作为一款功能强大的集成开发环境(IDE),IntelliJ IDEA为Web服务器提供了卓越的支持,从而极大地简化了程序员在Web开发过程中的工作流程。学习Java Web开发实质上就是掌握如何创造动态Web资源,这些资源在完成开发后&…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Text)

显示一段文本的组件。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 可以包含Span和ImageSpan子组件。 接口 Text(content?: string | Resource, value?: TextOptions) 从API versi…

(码农福利) 介绍几个不用魔法 就能免费使用的AI工具

因为 AI的飞速发展 IT行业已经可以说非常的卷了 作为程序员 如果不具备 AI 使用的能力 很快就会被淘汰 但 在社区内 无法直接谈论魔法 大部分程序员 可能也不具备魔法 今天说一个不需要魔法 好用的 AI工具 我们打开官网 https://chandler.bet/#/overView 点击 Get Chrome Ex…

部署docker仓库harbor

1、下载包 1、包已上传有两个harbor.v2.6.0.tar与harbor.tar 2、harbor.tar解压后会生成harbor目录,将harbor.v2.6.0.tar移动到harbor目录下。 3、执行harbor目录下的install.sh 4、执行完后修改配置文件 2、修改配置文件 vim /root/harbor/make/ harbor.yml.tmpl …

微信小程序-day01

文章目录 前言微信小程序介绍 一、为什么要学习微信小程序?二、微信小程序的历史创建开发环境1.注册账号2.获取APPID 三、下载微信开发者工具1.创建微信小程序项目2.填写相关信息3.项目创建成功 四、小程序目录结构项目的主体组成结构 总结 前言 微信小程序介绍 微信小程序&…

【计算机视觉】一、计算机视觉概述

文章目录 一、计算机视觉二、计算机视觉与其它学科领域的关系1、图像处理2、计算机图形学3、模式识别4、人工智能(AI)5、神经生理学与认知科学 三、计算机视觉的应用1. 人脸识别2. 目标检测3. 图像生成4. 城市建模5. 电影特效6. 体感游戏动作捕捉7. 虚拟…

Android Kotlin知识汇总(一)编程语言

在 2019 年 Google I/O 大会上宣布今后将优先采用 Kotlin 进行 Android 开发。Kotlin 是一种富有表现力且简洁的编程语言,不仅可以减少常见代码错误,还可以轻松集成到现有应用中。如果您想构建 Android 应用,建议您从 Kotlin 开始着手&#x…

电机控制杂谈——载波比降低对电机控制性能的影响以及简单的补救措施

在低速大功率和高速领域,受限于开关损耗、 散热能力以及系统效率,驱动器开关频率与电机基频的比值(即载波比)往往较低。(有的文献里也叫做基频比) 当载波比低于 15 时,认为电机工作在低载波比工…

新火种AI|GPT-4诞生1年,OpenAI把它放到了机器人上

作者:一号 编辑:美美 ChatGPT拥有了身体,机器人也有了灵魂。 从OpenAI在去年3月14日拿出GPT-4后,已经过了整整一年。显然,在GPT-4诞生之后的这一年,一切都迭代得太快了,从GPT-4展现多模态能力&…

Qt教程 — 3.1 深入了解Qt 控件:Buttons按钮

目录 1 Buttons按钮简介 1.1 Buttons按钮简介 1.2 Buttons按钮如何选择 2 如何使用Buttons按钮 2.1 QPushButton使用-如何自定义皮肤 2.2 QToolButton使用-如何设置帮助文档 2.3 QRadioButton使用-如何设置开关效果 2.4 QRadioButton使用-如何设置三态选择框 2.5 QCom…

吴恩达deeplearning.ai:独热编码One-hot连续有价值的特征回归树

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 One-hot编码连续有价值的特征回归树 在之前的决策树例子中,每个分裂都只有两种选择,但是今天我们将提到一种新的分裂方式叫做One-hot,可以解决以…

【Cookie和Session辨析】

1.cookie 1.1什么是cookie Cookie 是一种在客户端(通常是 Web 浏览器)和服务器之间传递信息的机制,用于在客户端存储少量的数据。它由服务器发送到客户端浏览器,然后浏览器会将这些数据存储在本地,并在后续的请求中将…

力扣热题100_矩阵_73_矩阵置零

文章目录 题目链接解题思路解题代码 题目链接 73.矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&…

基于Java+SpringBoot+vue的图书购物商城系统详细设计和实现

基于JavaSpringBootvue的图书购物商城系统详细设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

linux sshd_config配置说明

[root01 ssh]# cat sshd_config #######################SSH Base Config################## #######通过OpenSSH工具入xshell连接默认端口 可以改成其他默认是22 PAM 认证过程 1)使用者执行/usr/bin/passwd程序,并输入密码。 2)passwd开…

热点篇(三)-促进传统地产的数字化、网络化和智能化转型

在全国两会召开之际,两会代表纷纷建言“数字化”,全国人大代表、58同城CEO姚劲波指出,在数字中国的大背景下,房地产行业也需要将新的技术与传统地产相融合,从数字基建、数字管理到智能化开发等各个环节实现数字化的流程…

C语言之文件操作(万字详解)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点): 我要学编程(ಥ_ಥ)-CSDN博客 目录 前言 文件的打开和关闭 流和标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 fputc的使用 fgetc的使用 fput…

为什么大口径管材产线中使用大直径测径仪?

关键词:测径仪, 管材测径仪, 外径检测, 大口径管材测径仪, 大口径测径仪 在一个繁忙的钢管制造工厂里,生产线上的钢管正源源不断地被制造出来。然而,工程师们发现了一个问题:由于测量误差,部分钢管的直径不符合规格&am…