Qt提供的布局类以及他们之间的继承关系
QLayout-----QGirdLayout
      |
      ---QBoxLayout----QHBoxLayout
               |
               --QVBoxLayout
-----------------------------------------------------------------------------
常用到的布局类有:QHBoxlayout、QVBoxLayout、QGridLayout三种,分别是水平排列布局、垂直排列布局、表格排列布局。
常用到的方法有:addWidget()和addLayout().addWidget()用于在布局中插入控件,addLayout()用于在布局中插入子布局。
----------------------------------------------------------------------------
在布局管理还常用到 setMargin()用于设定边距,setSpacing()用于设定控件间距。
setColumnStretch()用于设置列的占空比。
-----------------------------------------------------------------------------
比起QHBoxLayout和QVBoxLayout,QGridLayout运用起来更加灵活。
QGridLayout的常用方法
1)addWidget方法:
  //放置一个控件到一个单元格
  void addWidget(QWidget *widget,int row,int column,Qt::Alignment alignment =0 )
  //如果放置的控件超出一个单元格,则使用该方法。
  void addWidget(QWidget *widget,int fromRow,int fromColumn,int rowSpan,int columnSpan,Qt::Alignment alignment = 0)
    1》row:指放置控件的网格行号(行号从0开始);
    2》column:指放置控件的网格列号(从0开始);
    3》alignment:对齐方式。
    4》fromRow:指放置控件的起始网格行号。
    5》formColumn:指放置控件的起始网格列号。
    6》rowSpan:指放置控件占多少行。
    7》columnSpan:指放置控件占多少列。
2)addLayout
  void addLayout(QLayout *layout,int row,int column,Qt::Alignment alignment = 0)
  void addLayout(QLayout *layout,int row,int column,int rowSpan,int columnSpan,Qt::Alignment alignemnt = 0)
  参数与addWidget类似。
3)setSpacing
  void QGridLayout::setSpacing(int spacing)
  设置控件水平和垂直之间的间隔
-----------------------------------------------------------------------------
在设计软件中各个部件的位置排列,有两种方法:
1)设置widget的父窗体的坐标和大小
  widget->move(x,y);
  widget->resize(width,height);
  //widget->setGeometry(QRect(x,y,width,height));
  优点:不想被布局约束,对这种控件可控制
  缺点:在遇到很多个部件时,一个个算坐标会很麻烦。
-----------------------------------------------------------------------------
  layout->addStretch();//添加可伸缩控件,我感觉就是占地方的那种
  layout->setAlignment(Qt::AlignHCenter);//布局内控件水平居中
  layout->setSpacing(10);//设置控件间的间隔为10
  layout->setMargin(10);//设置页边距为10
  Qt设计器中spacer控件
  以上在控件位置调整时常用
-----------------------------------------------------------------------------
控制布局管理中的控件自使应方式(控件随主窗体伸缩方式(可自行增大或缩小))
QSizePolicy sizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
  //可自行增大或缩小
  Fixed:不能放大或缩小
  Minimum: 不能小于sizeHint尺寸,可放大(若设置了最大尺寸 )
  Maximum:不能放大,可缩小到允许的最小尺寸(若setMinimumSize(10,10)只能缩小到(10,10))
  Preferred:控件的sizeHint是它的Hint,可以放大或缩小。
  Expandint:控件可以自行增大或者缩小。
-----------------------------------------------------------------------------

Qt之布局管理--基本布局的更多相关文章

  1. PyQt5布局管理(1)

    Qt布局管理按简单分可分为绝对位置布局和布局管理器布局 一.绝对位置布局: 组件不放在布局管理器中,通过函数setGeometry(x,y,width,height)来设定组件相对其父窗口的位置.其中 ...

  2. GTK+布局管理

    GTK+布局管理 GTK+ 布局管理 在本章中,我们将讲述如何将构件布置在窗口与对话框中. 当我们在设计应用程序的图形界面时,我们首先要决定的是在程序中用到哪种构件和管理应用程序中的这些构件.为了方便 ...

  3. Swing——布局管理器

    前言 在编写图形界面时,总是需要考虑的就是组件放在哪里,组件怎么大才合适.在Swing中就有现成的布局管理器帮我们做这些事情,我们不必写代码去一一安排.下面将介绍什么是布局管理器.Swing中常用布局 ...

  4. Java界面编程—布局管理

    布局是指容器中组件的排列方式 常用的布局管理器 布局管理器名称 所属类包 说明 FlowLayout(流式布局) java.awt 组件按照加入的先后顺序.按照设置的对齐方式从左向右排列,一行排满后到 ...

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

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

  6. PyQt5(2)——调整布局(布局管理器)第一个程序

    我们拖拽一个UI文件,转为PY文件后生成一个类Ui_MainWindow 此时,我们新建一个文件,用来控制业务逻辑(继承界面中的类),跟界面分开,这样我们就完成了界面和逻辑相分离(这段代码使用率基本1 ...

  7. [Tkinter 教程] 布局管理 (Pack Place Grid)

    原系列地址: Python Tkinter 简介: 本文讲述如何使用 tkinter 的布局管理 (被称作 layout managers 或 geometry managers). tkinter ...

  8. [Tkinter 教程12] 布局管理 (Pack Place Grid)

    简介: 本文讲述如何使用 tkinter 的布局管理 (被称作 layout managers 或 geometry managers). tkinter 有三种布局管理方式: pack grid p ...

  9. PyQt5笔记之布局管理

    代码:界面与逻辑分离 这是使用Designer做出的GUI,然后通过转换得到的Py代码.(界面文件) # -*- coding: utf-8 -*- # Form implementation gen ...

随机推荐

  1. arcmap配置的mxd慢的问题

    http://www.360doc.com/content/13/0220/09/3046928_266688511.shtml

  2. Android底部菜单的实现

    前言:以前制作菜单使用TabHost,但是android 3.0以上就被废弃了,google已经不建议使这个类了.ActionBar也是菜单,不过在头部,算是导航了 ===本文就介绍怎么制作底部菜单= ...

  3. 自定义一个字母Button

    package com.example.administrator.yunstore.widget; import android.content.Context; import android.gr ...

  4. 自动爬取ZiMuZu的内容发布到Wordpress

    先说一下大致的步骤. 首先需要模拟浏览器登录网站才能看到相应电影信息, 然后通过正则表达式从网页源代码中筛选出所需要的电影, 最后通过python-wordpress-xmlrpc将信息逐条发布到Wo ...

  5. mysql在同一个表上查询和更新

  6. Springboot数据库连接池报错的解决办法

    Springboot数据库连接池报错的解决办法 这个异常通常在Linux服务器上会发生,原因是Linux系统会主动断开一个长时间没有通信的连接 那么我们的问题就是:数据库连接池长时间处于间歇状态,导致 ...

  7. python批量进行文件修改操作

    python批量修改文件扩展名 在网上下载了一些文件,因为某种原因,扩展名多了一个后缀'.xxx',手动修改的话因为文件太多,改起来费时费力,于是决定写个小脚本进行修改. 1.要点: import r ...

  8. 转 Netflix OSS、Spring Cloud还是Kubernetes? 都要吧!

    Netflix OSS.Spring Cloud还是Kubernetes? 都要吧! http://www.infoq.com/cn/articles/netflix-oss-spring-cloud ...

  9. java中类继承,到底继承了什么?

    继承的最大好处就是为了实现代码的复用.那么,子类到底从父类得到的什么呢? 实例成员 父类的private成员不会被子类继承,子类不能访问.但是子类对象的确包含父类的私有成员. 父类的 包访问成员 继承 ...

  10. TweenMax学习一

    TweenMaxjs是一个性能很高的js动画框架,它与css3动画具有时间轴的概念.你可以很方便的把动画添加到一个时间轴队列里面去按照你需要的顺序去执行. 官网地址: http://greensock ...