JefferyZhou

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

总体来说,当前4.7 版本中的 AnchorLayout 还不甚完善(AnchorLayout 是从QT4.6引入的),不过主体功能已经完成。

Image(132)

从上述类图中可以看出,AnchorLayout 与其他的布局类有个区别,AnchorLayout没有依赖QGridLayoutEngine,所以可以知道AnchorLayout的排版工作是自己负责的。进一步观察发现,布局中引入了两个类 AnchorData, QGraphicsAnchor,正是这两个工具类,来解耦AnchorLayout的排版布局框架,AnchorData是算法对内结构体,QGraphicsAnchor是算法的对外表现接口。

内部的实现方式是基于有向图论实现结构的存储。

然后在排版子空间的时候,从两个方向依次排版

Vertical: 

1. 获取 Item 的 PreferredSize

2.根据Achonr链表得到 item 的 top 和 bottom 坐标, 同样的方法获取 left 和 right 坐标

3.item->setGeometry(rect)

实现细节待续。

posted on 2012-09-24 17:10  JefferyZhou  阅读(1515)  评论(0编辑  收藏  举报