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 中的居中小部件的主要内容,如果未能解决你的问题,请参考以下文章