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. easyloader源码

    /** * easyloader - jQuery EasyUI * * Licensed under the GPL: * http://www.gnu.org/licenses/gpl.txt * ...

  2. SQL语法整理

    SQL是Structured Query Language的缩写,中文全名为结构化查询语言,是一种用于数据存储,查询,更新和管理的关系数据库系统. SQL语法 创建表 create table tab ...

  3. c++代码中,使用svn版本号作为程序版本号的实现方法

    1.编写版本模板文件 #ifndef _VERSIONSVN_H_#define _VERSIONSVN_H_#define VER_REVISIONSVN $WCREV$#endif //!_VER ...

  4. monkey命令

    介绍: monkey是一个命令行工具,可以运行在Android模拟器里或真实设备中.它可以向系统发送伪随机(pseudo-random)的用户事件流(如按键输入.触摸屏输入.手势输入等),可以对待测的 ...

  5. jvisualVM 分析heapdump

    代码很简单,eclipse里面设置下最大堆空间为128m,: @Test public void testOutOfMemory() { List<NewsAddDto> document ...

  6. Flink - NetworkEnvironment

    NetworkEnvironment 是一个TaskManager对应一个,而不是一个task对应一个 其中最关键的是networkBufferPool, operator产生的中间结果,Result ...

  7. PCB上过孔via钻孔的直径如何设置 是任意的吗 谈谈PCB钻孔工艺及规格

    PCB上过孔via钻孔的直径如何设置,是不是可以随便填入一个直径尺寸就行了?比如我的走线宽度是6mil,那我的via过孔直径也设置为6mil,节约布线空间岂不是更好?这样的设计板厂是否都能按照设计规格 ...

  8. Win32 设置窗口透明度 SetLayerTransparent

    注意: 在调用SetLayeredWindowAttributes 之前,需要给窗口加上WS_EX_LAYERED属性,否则会无效 void SetLayerTransparent(HWND hWnd ...

  9. 在使用Intelligencia.UrlRewriter过程中 中文乱码问题

    由于业务需求,最近将项目部分模块修改为伪静态,使用到了Intelligencia.UrlRewriter.dll组件. 网上对使用Intelligencia.UrlRewriter.dll的配置讲解很 ...

  10. HttpServletRequest获取请求参数

    private static String getRequestParameter(HttpServletRequest request, HttpServletResponse response) ...