欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt图形视图框架:QGraphicsAnchorLayout

程序员文章站 2024-03-26 09:44:41
...

一、描述

图形视图框架锚点布局。可指定小部件应该如何相对于彼此以及布局本身放置。 

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 定义的锚点之间的锚点。