2

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

4

2 回答 2

5

这取决于您所说的“布局管理器”是什么意思,而且我对 Qt 不熟悉,所以这并没有给我太多线索。

但是,如果您的意思是可调整大小的窗口处理之类的东西,我认为相关术语是“约束求解器”。我从来没有深入研究过它,但我相信 GUI 约束求解器是基于线性规划——Simplex 算法等等。用Gaussian Elimination做点什么是可能的,但我对此没有信心。

基于对“gui layout linear programming”的快速搜索,您可能会发现CiteSeerX 的这篇论文很有趣 - 有一个 PDF 下载。如果你不喜欢神秘,好吧,至少乍一看它并不完全是数学重,但我怀疑它也不是轻阅读。我想我很快就会知道,因为你让我感兴趣。

于 2009-10-03T16:28:41.170 回答
2

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

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

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

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

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

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

于 2009-10-03T19:24:14.970 回答