给QWidget或者QDialog设置布局的时候方式很简单。创建好一个布局:mainLayout,然后不停地把各个控件往mainLayout里面放,最后调用setLayout(mainLayout)就行了。

QMainWindow中使用这个方法的时候却不管用,因为QMainWindow是默认有layout的,所以再次设置layout会失效。

会出现这种提示:

QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout
这句话的意思是说,你已经给MainWindow设置过一个布局了,再设置一个会出错。

该如何给QMainWindow正确地设置布局呢
要想QMainWidget创建布局,合理的步骤应该是这样的:

第一步创建一个QWidget实例,并将这个实例设置为centralWidget:

然后创建一个主布局mainLayout,并把所需要的所有控件都往里面放(工具栏、菜单栏、状态栏除外):
...

最一步就是将widget的布局设置为mainLayout

[cpp] view plaincopy
  1. widget = new QWidget();
  2. this->setCentralWidget(widget);
  3. cbox = new QCheckBox(this);
  4. cbox->setText("choose");
  5. cbox->setChecked(false);
  6. button = new QPushButton(this);
  7. QVBoxLayout *layout = new QVBoxLayout(this);
  8. layout->addWidget(cbox);
  9. layout->addWidget(button);
  10. widget->setLayout(layout);

QMainWindow中的布局管理相关推荐

  1. JAVA中GridBagLayout布局管理器应用详解

    很多情况下,我们已经不需要通过编写代码来实现一个应用程序的图形界面,而是通过强大的IDE工具通过拖拽辅以简单的事件处理代码即可很轻松的完成.但是我们不得不面对这样操作存在的一些问题,有时候我们希望能够 ...

  2. Java中BorderLayout布局管理器的两种排列实现方式

    java中Frame类默认的布局管理器为BorderLayout,其主要是将Frame窗口分为东西南北中五个区域,每个区域仅限于放一个组件,如加入多个,前免得会被覆盖,解决方法为:可以在一个区域中加入 ...

  3. 以下关于java中布局管理说法错误的是_对于 Java 中的布局管理器,以下说法中错误的是( )。_2019复习答案_学小易找答案...

    [单选题]下列哪个酶与丙酮酸生成糖无关? [单选题]宋代( )的产地是当时的福建建安. [单选题]建筑平面图中,外部尺寸一般标注( )尺寸. [单选题]MCS - 51 单片机的 CPU 主要的组成部 ...

  4. JAVA共有几种窗体布局方式_在Java GUI程序开发中常见的三种布局管理器是什么

    答:FlowLayout 流式布局,从左到右,如果到边界就换行再从左到右. BorderLayout 边界布局(默认布局方式),按东西南北中五个方向来布局,默认是中.后设置在同样位置的控件会覆盖之前的 ...

  5. PyQt5学习Ⅱ(菜单,工具栏和布局管理)

    在PyQt5教程的这一部分中,我们创建了创建状态栏,菜单栏和工具栏.菜单是位于菜单栏中的一组命令.工具栏上有按钮,其中包含应用程序中的一些常用命令 状态栏显示状态信息,通常位于应用程序窗口的底部. Q ...

  6. JAVA图形界面(GUI)之布局管理器

    一个友好的读者界面是一款软件成功的关键因素之一.布局管理器就是用来管理读者的界面.摆放的效果直接影响到界面是否美观.布局管理器通过布局管理类来对各种读者组件进行管理. 使用布局管理器,不仅可以有序的排 ...

  7. 【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现

    写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...

  8. GridBagLayout布局管理器应用详解

    很多情况下,我们已经不需要通过编写代码来实现一个应用程序的图形界面,而是通过强大的IDE工具通过拖拽辅以简单 的事件处理代码即可很轻松的完成.但是我们不得不面对这样操作存在的一些问题,有时候我们希望能 ...

  9. PyQt4布局管理——绝对定位方式

    PyQt4中的布局管理器 布局管理器是编程中重要的一部分.所谓布局管理器是指我们在窗口中安排部件位置的方法.布局管理器有两种工作方式:绝对定位方式(absolute positioning)和布局类别 ...

最新文章

  1. Linux下快速安装TensorFlow的教程
  2. java web编码详解_java web 开发 编码问题详解
  3. 获取元素到页面顶部的距离_jQuery 操作元素综合案例
  4. 手动制作linux live,Linux下Live USB如何制作
  5. 老姚浅谈:怎么学JavaScript?
  6. mpu 配置内存空间_mpu内存保护单元功能及工作原理
  7. Android应用进入爆发期 手机游戏仍是市场重心
  8. Spring源码学习路线
  9. 8 传输层----TCP
  10. storm-基本概念
  11. JavaScript中的“黑话”
  12. Python bcrypt 加密验证密码
  13. wgs84坐标系拾取工具_COORD坐标转换
  14. 安装dump1090
  15. Thunderbird – 开源免费跨平台邮箱客户端
  16. GLSL里的矩阵对向量的乘法与OpenGL里用数组生成矩阵进行向量乘法的非直觉不一致
  17. QT自定义控件之车辆远近光灯
  18. 自动换刀主轴与手动换刀主轴优缺点对比
  19. Wi-Fi PNO扫描流程(Android P)
  20. ESP32用Arduino编程实现CAN总线通讯

热门文章

  1. pytorch入门使用
  2. x3-02 java_Day13 -- Java流程控制02
  3. oracle 如何创建job,oracle创建job
  4. (JAVA)Math类
  5. php_self nginx,nginx中的PATH_INFO为什么会影响$_SERVIER['PHP_SELF']
  6. 「一本通 4.1 练习 2」简单题
  7. delphi ---ttoolbar,ttoolbutton
  8. 怎样解决MySQL数据库主从复制延迟的问题?
  9. Flyweight Design Pattern 共享元设计模式
  10. OpenStack Weekly Rank 2015.08.24