【问题标题】:Resources on creating a GUI Layout Manager?有关创建 GUI 布局管理器的资源?
【发布时间】:2010-12-03 13:57:25
【问题描述】:

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

【问题讨论】:

  • 您在哪个平台上使用什么库来创建您的 GUI?
  • 我正在尝试写我自己的,只是为了它的地狱。

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


【解决方案1】:

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

但是,如果您指的是可调整大小的窗口处理之类的东西,我认为相关术语是“约束求解器”。我从来没有这么多地研究过它,但我相信 GUI 约束求解器是基于 linear programming - Simplex algorithm 和所有这些。用Gaussian Elimination 做点什么是可能的,但我对此还没有信心。

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

【讨论】:

  • 这就是我要找的!抱歉,术语使用不正确,因为这对我来说是未知领域。谢谢。
  • +1 获取论文链接。所有这些类型的文件通常都在付费墙后面。
  • @graham.reeds:citeseer 是查找文章的好网站,否则无法免费使用。我在攻读硕士学位时经常使用它。
【解决方案2】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多