GTK +菜单栏看起来很糟糕

wec*_*ing 3 gtk menubar

我按照这里的说明写了一个Gtk +菜单栏.

将条形包装到VBox上时

// "FALSE, TRUE" and "FALSE, FALSE" actually makes no difference
gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar,
                   TRUE, FALSE, 0);
Run Code Online (Sandbox Code Playgroud)

菜单栏看起来很糟糕,像这样:

纤薄的菜单栏

当我改为:

 gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar,
                    TRUE, TRUE, 0);
Run Code Online (Sandbox Code Playgroud)

看起来像:

在此输入图像描述

那么,如何让工具栏分配更小的空间?

Fré*_*idi 9

如果我理解你的问题,你想:

  1. 摆脱菜单栏周围的浅灰色填充物.
  2. 在不扩展菜单栏的情况下执行上述操作以填充可用空间.

因此,你的包装模式,其它部件(即菜单栏下面的按钮栏)进场(为了清楚起见,我将把它们作为button_hboxmenu_bar分别,因为两者都可以作为"工具栏"资格).

理解传递给gtk_box_pack_start()的布尔布局参数在这里是至关重要的:

  • 第一个expandTRUE,在计算布局之后,小部件是否应该消耗其容器中剩余的空白空间.以这种方式包装的小部件同样竞争剩余的空间.

  • 第二个,fillTRUE如果微件应填写它消耗的,而不是在其内部为中心的布局空间(有而来的浅灰色填充).

我们的想法是你有一个(或更多,但现在让我们坚持一个)主要小部件main_vbox,并且该小部件包含两者expandfill设置为TRUE.它周围的卫星小部件包含expand设置FALSEfill设置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  |
+-------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

在您的情况下,由于您不想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);
Run Code Online (Sandbox Code Playgroud)

  • 为丑陋的ASCII艺术道歉,我老了:) (2认同)
  • 我喜欢ASCII艺术:-P (2认同)
  • 非常好的写作,ASCII艺术的额外点:) (2认同)