zoukankan      html  css  js  c++  java
  • 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.
  • 相关阅读:
    Locale IDs Assigned by Microsoft (zz)
    MFC 版本
    vs macro shortcuts
    关于strassen矩阵乘法的矩阵大小不是2^k的形式时,时间复杂度是否还是比朴素算法好的看法
    团体程序设计天梯赛 L2-016. 愿天下有情人都是失散多年的兄妹
    团体程序设计天梯赛-练习集 L1-031. 到底是不是太胖了
    团体程序设计天梯赛 L3-004. 肿瘤诊断
    团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树
    团体程序设计天梯赛 L1-011. A-B
    团体程序设计天梯赛 L1-010. 比较大小
  • 原文地址:https://www.cnblogs.com/wang1994/p/5942915.html
Copyright © 2011-2022 走看看