zoukankan      html  css  js  c++  java
  • QT code level layout base knowledges

     

     

    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.
  • 相关阅读:
    Java实现 LeetCode 382 链表随机节点
    Java实现 LeetCode 382 链表随机节点
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 381 O(1) 时间插入、删除和获取随机元素
    Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
    Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
    Linux下的iwpriv(iwlist、iwconfig)的简单应用
    OCX控件的注册卸载,以及判断是否注册
    .OCX、.dll文件注册命令Regsvr32的使用
  • 原文地址:https://www.cnblogs.com/ruiy/p/15528145.html
Copyright © 2011-2022 走看看