FLTK 中的居中小部件

Posted

技术标签:

【中文标题】FLTK 中的居中小部件【英文标题】:Centered Widget in FLTK 【发布时间】:2014-09-11 13:50:32 【问题描述】:

您可以在 FLTK 中将不可调整大小的小部件居中吗? this *** question 的引用似乎暗示答案是否定的。居中的小部件需要在任一侧都可调整大小的小部件,但组中只能有一个可调整大小的子项。

(抱歉问和回答,但我搜索了所有这些几乎都放弃了,所以我认为这对其他人有用。)

【问题讨论】:

【参考方案1】:

这就是你的做法。诀窍是 FLTK 中的小部件可以其父组的边界之外。

您有 4 个组 A、B、C 和 D。B 和 C 是 A 的子项。D 是 C 的子项。未显示的是您实际想要居中的小部件,称为 E。E 是子项C. A 和 E 是您真正想看到的。 B、C 和 D 是空的,没有边框,所以它们是不可见的。 A 和 D 可调整大小。没有别的了。 A 中的中心 E,不与 D 重叠。E 将部分位于 C 之外。这就是诀窍。

|--------------------------------------------|
|                 A                          |
||--------------------||--------------------||
||                    ||           |-----|  ||
||          B         ||      C    |  D  |  ||
||                    ||           |-----|  ||
||--------------------||--------------------||
|--------------------------------------------|

当 A 被调整大小时,B 和 C 将按比例和相等地调整大小,因为 A 没有可调整大小的子项,并且它们的大小相同。 C 的原点将保持在 A 的中心。当 C 被调整大小时,E 不会被调整大小,只有 D。所以 E 将保持在相对于 C 的原点的相同位置,即相对于 A 的中心.

警告 1:我已经在 FLUID/FLTK 1.3.0 中实现了这一点,这无疑是旧的。从那以后情况可能发生了变化。我没有尝试在最近的任何事情上验证这一点。

警告 2:每当您移动 任何 小部件时,FLUID 都会自动调整组的大小以将小部件包含在其中。这打破了居中行为。我发现我需要通过 FLUID 对话框将 C 的大小调整为原始大小,任何其他布局更改之后,每次。

【讨论】:

以上是关于FLTK 中的居中小部件的主要内容,如果未能解决你的问题,请参考以下文章

FLTK 绘图功能使用哪个原点?小部件还是窗口?

具有可编辑字段的 FLTK 选择小部件

fltk 小部件顺序,按钮隐藏在另一个小部件下

fltk-1.3.5 小部件上的视觉工件

RUST + FLTK:从小部件 on_push() 函数访问另一个小部件

从不同选项卡 FLTK 开始的线程中隐藏小部件