如果我正確理解你的問題,你想:
- 擺脫周圍的菜單欄中的淺灰色填充。
- 在不擴展菜單欄來填充可用空間的情況下執行上述操作。
因此,您其他部件(即按鈕,您的菜單欄下方欄)的包裝方式進場(爲了清楚起見,我將把它們分別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);
這豈不有一個特殊的位置把它?我對GTK的這方面並不熟悉,但我知道Qt的QMainWindow有一個菜單欄的特定位置;它有三個位置 - 菜單欄,中央小部件和狀態欄。 –
@FrédéricHamidi:哎呀。我犯了一個錯誤。抱歉。我修改了我的問題。 – wecing