Qt图形视图框架:QGraphicsAnchorLayout

一、描述

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值