FLTK中的中心小部件

时间:2014-09-11 13:50:32

标签: resize centering fltk

您可以将不可调整大小的小部件集中在FLTK中吗?来自this stackoverflow question的引用似乎暗示答案是否定的。中心窗口小部件需要两侧可调整大小的窗口小部件,但您只能在一个组中拥有一个可调整大小的子窗口。

(对不起,这个问题和答案,但我为了这个而搜索过,差不多放弃了,所以我认为这对其他人有用。)

1 个答案:

答案 0 :(得分: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调整为原始大小,之后每次更改任何其他布局。