【QT入门】 Qt代码创建布局之setLayout使用

往期回顾:

【QT入门】 Qt代码创建布局之水平布局、竖直布局详解-CSDN博客

【QT入门】 Qt代码创建布局之栅格布局详解-CSDN博客

【QT入门】 Qt代码创建布局之分裂器布局详解-CSDN博客

 【QT入门】 Qt代码创建布局之setLayout使用

一、setLayout

1、什么是setLayout

setLayout是一个用于设置布局的方法,通常用于图形界面开发中。在不同的图形界面库或框架中,setLayout的使用方式可能会有所不同,但通常都是用来指定组件在父容器中的布局方式和位置。

一般来说,setLayout 方法会接受一个布局管理器(layout manager)作为参数,该布局管理器会定义组件的排列方式。常见的布局管理器包括HBoxLayout、BorderLayout、GridLayout 等。

2、使用特点

记住如果你已经在某个小部件上使用了布局管理器并setLayout,那么QWidget不会再让你实用另一个。必须首先删除现有的布局管理器(由layout()返回),然后才能用新的布局调用setLayout()。

什么意思呢?就是说在一个程序里,setLayout只会生效一次,如果我同时设置多个布局,最终会是第一个布局。

3、代码示例

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

    //不用加this
    QPushButton* btn1 = new QPushButton;
    btn1->setFixedSize(100, 100);
    btn1->setText("btn1");

    QPushButton* btn2 = new QPushButton;
    btn2->setFixedSize(100, 100);
    btn2->setText("btn2");

    QHBoxLayout* hLay = new QHBoxLayout(this);
    hLay->addWidget(btn1);
    hLay->addWidget(btn2);
    setLayout(hLay);//设置水平布局

    QPushButton* btn3 = new QPushButton;
    btn3->setFixedSize(100, 100);
    btn3->setText("btn3");

    QPushButton* btn4 = new QPushButton;
    btn4->setFixedSize(100, 100);
    btn4->setText("btn4");

    QVBoxLayout* vLay = new QVBoxLayout(this);
    vLay->addWidget(btn3);
    vLay->addWidget(btn4);
    setLayout(vLay);//设置垂直布局
}

比如在这个例子里,我用了两次setLayout方法,但是最终出现的是水平布局,不仅如此,垂直布局的btn3和btn4都不会显示在窗口上,即使是给垂直布局指定了父类为this。就是因为在一个程序里,setLayout只会生效一次,我同时设置多个布局,最终会是第一个布局。

运行结果:

但是,如果我在这里给btn3或者btn4指定了父类指针为this,这两个按钮就可以显示在窗口上,只是说不会按照垂直布局显示。

假设我设置btn3的父类指针为this

    QPushButton* btn3 = new QPushButton(this);
    btn3->setFixedSize(100, 100);
    btn3->setText("btn3");

则最终运行结果如下:

 可以看到btn3会显示在窗口上,但是不会按布局显示,因为第二次setLayout对他是无效的


都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

相关推荐

  1. Qt-布局

    2024-03-31 18:52:11       39 阅读
  2. QTQML布局相关总结

    2024-03-31 18:52:11       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-31 18:52:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-31 18:52:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-31 18:52:11       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-31 18:52:11       20 阅读

热门阅读

  1. Opencv 读取灰度图像会识别为3通道问题

    2024-03-31 18:52:11       16 阅读
  2. MySQL——锁

    2024-03-31 18:52:11       18 阅读
  3. 提升学术水平,ChatGPT助你一臂之力

    2024-03-31 18:52:11       19 阅读
  4. android 快速实现 图片获取并裁剪(更换头像)

    2024-03-31 18:52:11       21 阅读
  5. python项目练习——7.网站访问日志分析器

    2024-03-31 18:52:11       19 阅读
  6. 数据可视化之多表显示

    2024-03-31 18:52:11       19 阅读
  7. 软件之禅(十一) 消息

    2024-03-31 18:52:11       18 阅读
  8. vim的缓冲区管理技能

    2024-03-31 18:52:11       16 阅读
  9. ChatGPT:学术界必备的写作利器

    2024-03-31 18:52:11       17 阅读
  10. C 语言练习分享

    2024-03-31 18:52:11       16 阅读
  11. leetcode 64.最小路径和

    2024-03-31 18:52:11       14 阅读
  12. vue组件的select怎么赋值?

    2024-03-31 18:52:11       15 阅读