2

我有一个从 GtkVBox 派生的自定义小部件,它根据状态包含一系列子小部件。我希望此自定义小部件的所有实例具有相同的高度,并且即使某些子小部件不可见,子小部件也始终放置在此自定义小部件内的相同位置,即如果未显示所有子小部件,我想要子小部件所在的空间显示为已被占用且为空。

例如,考虑一个 GtkVBox,它可能包含最多四个按钮,但有时只显示第一个和最后一个按钮。第一个和最后一个按钮之间应该有一个空白的垂直空间,这对应于第二个和第三个按钮如果显示它们所占用的空间,即在它们之间有相同大小的占位符。

据我了解,我有两种选择:

  1. 或者我可以使用 GtkFixed 作为容器并自己完成所有定位和调整代码
  2. 或者我可以创建假按钮,从中获取大小申请,然后添加一个虚拟小部件,例如一个与 VBox 的占位符大小相等的空 GtkLayout

第二个选项相当hackish,但让我免于编写大量代码,它有什么缺点吗?你会怎么做,为什么,有更好的主意吗?

4

0 回答 0