总体来说,当前4.7 版本中的 AnchorLayout 还不甚完善(AnchorLayout 是从QT4.6引入的),不过主体功能已经完成。
从上述类图中可以看出,AnchorLayout 与其他的布局类有个区别,AnchorLayout没有依赖QGridLayoutEngine,所以可以知道AnchorLayout的排版工作是自己负责的。进一步观察发现,布局中引入了两个类 AnchorData, QGraphicsAnchor,正是这两个工具类,来解耦AnchorLayout的排版布局框架,AnchorData是算法对内结构体,QGraphicsAnchor是算法的对外表现接口。
内部的实现方式是基于有向图论实现结构的存储。
然后在排版子空间的时候,从两个方向依次排版
Vertical:
1. 获取 Item 的 PreferredSize
2.根据Achonr链表得到 item 的 top 和 bottom 坐标, 同样的方法获取 left 和 right 坐标
3.item->setGeometry(rect)
实现细节待续。