Qt 布局管理

发布于:2024-06-12 ⋅ 阅读:(44) ⋅ 点赞:(0)

布局基础

1)Qt 布局管理系统使用的类的继承关系如下图:
在这里插入图片描述
QLayout 和 QLayoutItem 这两个类是抽象类,当设计自定义的布局管理器时才会使用到,通常使用的是由 Qt 实现的 QLayout 的几个子类。

2)Qt 使用布局管理器的步骤如下

  • 首先创建一个布局管理器类的对象。
  • 然后使用该布局管理器类中的 addWidget()函数,把需要由布局管理器管理的部件添加进来。还可使用 addLayout()函数把其他布局管理器添加进来。
  • 最后使用 QWidget::setLayout()函数为窗口设置布局管理器。
    使用过程中的注意事项:
  • 若为布局指定了父部件,则可以不使用 QWidget::setLayout()函数,反之,调用QWidget::setLayout()函数安装布局,则可以不为该布局指定父部件。
  • 不需要为添加到布局中的部件指定父部件,布局中的部件会自动成为安装布局的部件的子部件(使用 QWidget::setParent())。注意:子部件的父部件不是布局,而是安装布局的部件。

3)部件拉伸因子(Stretch):拉伸因子描述了各个部件在进行拉伸时,多个部件之间应以怎样的比例进行拉伸。使用设置拉伸因子的函数(如setStretch)时,应注意在添加部件之后使用,否则将不起作用

4)内容边距(ContentsMargins)、间距(spacing)和 QSpacerItem 类解释:

  • 内容边距(ContentsMargins):就是页边距,指的是布局中的各子部件(内容)与周围四个边的距离。常用函数如void QLayout::setContentsMargins(int left, int top, int right, int bottom);
  • 间距(spacing)指的是各部件之间的距离
  • QSpacerItem 类:使用该类可以创建自定义的间距,使用该类创建的间距相当于是一个空白部件,它是布局中的一个项目,会在布局中占据一个位置,布局会为其分配一个索引号,也就是说由QSpacerItem 类创建的对象是可以由布局管理器进行管理的。通常不需要使用这个类,因为在各布局管理器中有相应的函数代替了该类的功能。
    注意spacing 属性设置的间距不是一个 QSpacerItem,它不是布局中的一个项目,spcing 属性只是设置了两部件之间的距离,在这之间未插入任何东西,因此布局不会为其分配索引号

QBoxLayout类

QBoxLayout 盒式布局管理器,可以创建水平或垂直方向的布局管理器,通常使用的是该类的两个子类 QHBoxLayout 和 QVBoxLayout。

QBoxLayout 布局中的常用成员函数如下:

  • QBoxLayout(Direction dir, QWidget* parent = Q_NULLPTR);
    构造一个方向为 dir 的盒式布局
  • void addLayout(QLayout* layout, int stretch = 0);
    void insertLayout(int index, QLayout* layout, int stretch = 0);
    把布局layout添加到末尾或在指定索引index处插入布局,并设置其拉伸因子为stretch,若 index 为负,则添加到末尾。
  • void addWidget(QWidget* widget, int stretch = 0, Qt::Alignment m = Qt::Alignmnet());
    void insertWidget(int index, QWidget* widget, int stretch = 0, Qt::Alignment m = Qt::Alignmnet());
    把部件 widg

网站公告

今日签到

点亮在社区的每一天
去签到