Qt之布局管理--基本布局

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:控件可以自行增大或者缩小。
-----------------------------------------------------------------------------

The future's not set,there is no fate but what we make for ourselves.
原文地址:https://www.cnblogs.com/wang1994/p/5942915.html