我正在按照here指令编写Gtk +菜单栏。
使用
将条形包装到VBox上时// "FALSE, TRUE" and "FALSE, FALSE" actually makes no difference
gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar,
TRUE, FALSE, 0);
菜单栏看起来很糟糕,像这样:
当我改为:
gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar,
TRUE, TRUE, 0);
看起来像:
那么,如何让工具栏分配更小的空间?
答案 0 :(得分:9)
如果我理解你的问题,你想:
因此,其他小部件(即菜单栏下方的按钮栏)的打包模式起作用(为清楚起见,我将其称为button_hbox
和{分别为{1}},因为两者都可以作为“工具栏”)。
了解传递给gtk_box_pack_start()的布尔布局参数在这里是最重要的:
如果小部件在计算布局后应占用其容器中剩余的空白区域,则第一个menu_bar
为expand
。以这种方式包装的小部件同样竞争剩余的空间。
第二个TRUE
是fill
,如果小部件应该填充它消耗的布局空间而不是在其中居中(有浅灰色的填充)。
我们的想法是,您在TRUE
中拥有一个(或更多,但让我们坚持一个)主要小部件,并且该小部件包含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