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

这篇具有很好参考价值的文章主要介绍了Qt之格栅布局(QGridLayout)控件填满整个单元格。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt专栏:

目录

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的官方文档:

qt gridlayout填充不满,#Qt,qt,开发语言,c++

 翻译一下就是:

        将给定的小部件添加到行、列的单元格网格中。默认情况下,左上角的位置为(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的介绍为:

qt gridlayout填充不满,#Qt,qt,开发语言,c++

解释为:

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的官方文档之外,还需要大胆的发散性思维,假设求证。只有这样才能提高我们的编码水平。文章来源地址https://www.toymoban.com/news/detail-852058.html

到了这里,关于Qt之格栅布局(QGridLayout)控件填满整个单元格的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT基础入门【布局篇】消除控件之间的间隔

    layoutLeftMargin: layout内的布局距离边框左端的距离。 layoutTopMargin: layout内的布局距离边框顶端的距离。 layoutRightMargin: layout内的布局距离边框右端的距离。 layoutBottomMargin: layout内的布局距离边框底端的距离。 layoutHorizontalSpacing: layout内的水平方向内的对象(包括控件和低一级布局

    2024年01月19日
    浏览(40)
  • C++ Qt 学习(二):常用控件使用与界面布局

    ui 设计器设计界面很方便,为什么还要手写代码? 更好的控制布局 更好的设置 qss 代码复用 完全不会写 Qt 布局,很麻烦,怎么学会手写布局? 看 Qt 自己怎么写 改良 Qt 的布局写法 1.1 水平布局 addWidget() 在布局里添加一个控件 addLayout() 在布局里添加子布局 setMargin() 设置水平

    2024年02月06日
    浏览(55)
  • Qt Designer 控件箱中的控件介绍及布局比列分配

    控件箱介绍                 Qt Designer的控件箱(Widget Box)包含了各种常用的控件,用户可以通过拖放的方式将这些控件添加到窗体设计器中,用于构建用户界面。以下是一些常见控件箱中的控件及其功能的讲解: 1. 基本控件 : 标签(Label) :用于显示文本或图像。

    2024年04月13日
    浏览(41)
  • QT自定义优雅的表单控件,简单实现设置界面布局

    FormView.h FormView.cpp 核心函数 函数 变量 功能 addEditableItem title: 输入框前面的提示文字,同时作为该控件的标识符 place_holder: 输入框中的提示文字 在表单中插入一个可填写项 addCheckableItem title: 不显示在UI中,仅作为该控件的标识符 content: 勾选框后面的内容 init_status: 勾选框的初

    2024年02月11日
    浏览(47)
  • 开源Qt Ribbon控件——SARibbon的布局思路及介绍

    原文链接:https://blog.csdn.net/czyt1988/article/details/113811620 https://devpress.csdn.net/gitcode/6412b1fe986c660f3cf9294a.html?spm=1001.2101.3001.6650.4utm_medium=distribute.pc_relevant.none-task-blog-2 default CTRLIST activity-4-108312948-blog-126431338.235^v31^pc_relevant_default_base3depth_1-utm_source=distribute.pc_relevant.none-task-blog-2 defa

    2024年01月25日
    浏览(37)
  • 【QT】一 设置布局后,控件大小会自动变化,如何设置想要的

    目录 1. 设置好控件大小 2. 设置布局  3. 设置layout  给一个QWidget控件内部设置布局后,原来内部的控件大小变小了,如何解决?           把最小值设置好。         选择整体,选择布局方式,这里为水平布局。 你会发现,可能显示不全。 选择整体,属性拉到最下面,

    2024年02月11日
    浏览(83)
  • 解决QT中UI控件布局更改后运行结果没有发生变化的问题

    在学习QT中,遇到了一个问题,那就是当我UI中更改了控件布局后,运行的结果却并没有发生改变,于是我上网查找了一些资料,大多略显麻烦。 效果如下:这是UI控件更改布局后  这是运行后结果 显然,UI文件中并没有更新。 我的解决方案是: 1.首先在项目文件中找到UI文件

    2024年02月11日
    浏览(83)
  • VS+Qt设置窗口尺寸(二):窗体控件自适应窗口布局,自动调整大小

    VS版本:VS2019 QT版本:Qt5.12.3(msvc2017_64) 为了适配不同尺寸的显示屏,软件窗口需要调整大小,窗口内的控件尺寸也要适配窗口的大小。 本例重点讲述如何设置可调整尺寸的窗口及控件,实现窗口最大化和尺寸调节。 本例使用相对简单的按键和文本框来做示例,其他控件均可

    2023年04月23日
    浏览(110)
  • QT入门Layouts之Vertical Layout、Horizontal Layout、QGridLayout

    目录 一、界面布局效果 1、界面位置介绍 2、属性功能介绍  二、代码创建布局效果  三、QGridLayout介绍 此文为作者原创,转载请标明出处! 先以Horizontal Layout来举例说明下:先拖个Horizontal Layout在界面上,再拖三个pushButton放到Horizontal Layout里,然后就看到如下布局效果: 基

    2024年02月13日
    浏览(46)
  • 实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放

    实现Qwidget窗口填满整个主窗口,并跟随鼠标的拖动自动缩放 新建一个窗口,我想在这个窗口上放一个QWidget,并且这个QWidget能够布满整个窗口,还可以随着随鼠标的拖动自动缩放 1、首先给大家介绍一个好用的组件库:qt-material-widgets (1)开源地址(基于QWidgets) 基于Qt Qui

    2024年02月10日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包