如果我正确理解你的问题,你想做以下事情:
- 消除菜单栏周围的浅灰色填充。
- 在不扩展菜单栏以填充可用空间的情况下实现以上操作。
因此,您的其他窗口小部件(即菜单栏下面的按钮栏)的打包模式发挥了作用(为了清晰起见,我将其分别称为button_hbox和
menu_bar
,因为两者都可以作为“工具栏”)。了解传递给
gtk_box_pack_start()的布尔布局参数至关重要:
这个想法是在
main_vbox
中有一个(或多个,但现在我们先用一个)主要小部件,并且该小部件被打包时设置了
expand
和
fill
为
TRUE
。其周围的卫星小部件则被打包时将
expand
设置为
FALSE
,
fill
设置为
TRUE
。例如:
+-------------------------------------------+
| Menu bar: expand = FALSE, fill = TRUE |
+-------------------------------------------+
| Toolbar: expand = FALSE, fill = TRUE |
+-------------------------------------------+ ^
| | |
| | | The height of this widget
| Main widget: expand = TRUE, fill = TRUE | | varies depending on the
| | | height of its container.
| | |
+-------------------------------------------+ v
| Status bar: expand = FALSE, fill = TRUE |
+-------------------------------------------+
在您的情况下,由于您不希望
menu_bar
填充可用空间,
button_hbox
应该这样做:
// Menu bar: satellite widget, expand = FALSE, fill = TRUE
gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar, FALSE, TRUE, 0);
// Button bar: main widget, expand = TRUE, fill = TRUE
gtk_box_pack_start(GTK_BOX(main_vbox), button_hbox, TRUE, TRUE, 0);