一、描述
图形视图框架锚点布局。可指定小部件应该如何相对于彼此以及布局本身放置。
1.1、尺寸提示和尺寸策略
QGraphicsAnchorLayout “尊重”每个项目的大小提示和大小策略。
1.2、锚布局内的间距
布局可能会在项目之间分配一些空间。 如果未明确指定间距,则实际的空间量通常为 0。如果间距为负,则项目将在一定程度上重叠。
1.3、目前的问题
QGraphicsAnchorLayout 目前不支持某些功能:
- 不考虑拉伸因素。
- 不遵守 QSizePolicy::ExpandFlag。
二、成员函数
1、QGraphicsAnchor *addAnchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge)
在项目 firstItem 的边 firstEdge 和项目 secondItem 的边 secondEdge 之间创建一个锚点。锚点的间距是从样式中选取的。如果 firstItem 和 secondItem 不是布局的一部分,它们会自动添加到布局中。在 firstItem 或 secondItem 是布局的祖先的情况下调用此函数具有未定义的行为。
Qt::AnchorPoint:指定可以锚定的布局项的一侧。
- Qt::AnchorLeft:布局项的左侧。
- Qt::AnchorHorizontalCenter:水平居中。
- Qt::AnchorRight
- Qt::AnchorTop
- Qt::AnchorVerticalCenter:垂直居中
- Qt::AnchorBottom
2、void addAnchors(QGraphicsLayoutItem *firstItem, QGraphicsLayoutItem *secondItem, Qt::Orientations orientations = Qt::Horizontal | Qt::Vertical)
将 firstItem 的两个或四个边与 secondItem 的相应边锚定,以便 firstItem 在由方向指定的维度中与 secondItem 具有相同的大小。
layout->addAnchor(b, Qt::AnchorLeft, c, Qt::AnchorLeft);
layout->addAnchor(b, Qt::AnchorRight, c, Qt::AnchorRight);
等同于:
layout->addAnchors(b, c, Qt::Horizontal);
3、void addCornerAnchors(QGraphicsLayoutItem *firstItem, Qt::Corner firstCorner, QGraphicsLayoutItem *secondItem, Qt::Corner secondCorner)
在角指定的 firstItem 和 secondItem 之间创建两个锚点,firstCorner 和 secondCorner,其中一个用于水平边缘,另一个用于垂直边缘。
layout->addAnchor(a, Qt::AnchorTop, layout, Qt::AnchorTop);
layout->addAnchor(a, Qt::AnchorLeft, layout, Qt::AnchorLeft);
等同于:
layout->addCornerAnchors(a, Qt::TopLeftCorner, layout, Qt::TopLeftCorner);
4、QGraphicsAnchor *anchor(QGraphicsLayoutItem *firstItem, Qt::AnchorPoint firstEdge, QGraphicsLayoutItem *secondItem, Qt::AnchorPoint secondEdge)
返回由 firstItem 和 firstEdge 以及 secondItem 和 secondEdge 定义的锚点之间的锚点。