有关创建GUI布局管理器的资源?

时间:2009-10-03 13:37:11

标签: c++ user-interface layout layout-manager

我一直在研究一个简单的GUI,并遇到了障碍。我还没有找到任何关于如何创建GUI布局管理器的示例甚至可读源。我想知道是否有人知道创建一个或一些不像Qt的布局引擎那样神秘的源代码的一些资源。

2 个答案:

答案 0 :(得分:4)

这取决于你对“布局管理器”的意思,我对Qt并不熟悉,所以这并没有给我很多线索。

如果你的意思是像可调整大小的窗口处理那样,我认为相关术语是“约束求解器”。我从来没有那么多地研究它,但我相信GUI约束求解器基于linear programming - Simplex algorithm以及所有这些。可能会对Gaussian Elimination做一些事情,但我对此并不十分自信。

基于快速搜索“gui layout linear programming”,您可能会发现CiteSeerX中的this paper很有趣 - 有一个PDF下载。如果你不喜欢神秘,好吧,至少它一眼就看出数学并不严重,但我怀疑它也不是很轻松。我想我很快就会发现,因为你让我感兴趣。

答案 1 :(得分:2)

我目前正在为Mozilla XUL制作一个Windows端口。我的方法不涉及史蒂夫提到的线性编程技术,但它是一种更面向对象的方法。它基于Composite和Decorator设计模式。

复合模式允许您创建具有子控件的控件,而子控件又可以拥有自己的子控件。控件负责将其子控件定位在其指定的客户端矩形中。

例如,假设您要实现一个水平定位其子控件的布局。然后,布局算法需要计算每个子控件的宽度,以便计算每个子控件的x偏移量。

通过返回子控件宽度的总和来计算容器的宽度。

Decorator类可用于添加额外的属性。例如,MarginDecorator可以在子控件之间添加间距,ScrollDecorator可以添加滚动条等...

这是一件有趣的事情,祝你好运!