2011-08-07 5 views
3

私は指示hereの後にGtk +メニューバーを書いています。GTK +のメニューバーがひどく見える

slim menu bar

とするとき、私はに変更:

gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar, 
        TRUE, TRUE, 0); 

// "FALSE, TRUE" and "FALSE, FALSE" actually makes no difference 
gtk_box_pack_start(GTK_BOX(main_vbox), menu_bar, 
        TRUE, FALSE, 0); 

でVBoxの上にバーをパックメニューバーは次のように、ひどい見えます

それはのように見えます:

enter image description here

こうして、ツールバーに割り当てられるスペースを小さくする方法はありますか?

+0

は、それはそれを置くための特別な場所を持っていませんか?私はGTKのその側面に慣れていませんが、私はQtのQMainWindowがメニューバーの特定の場所を持っていることを知っています。メニューバー、中央ウィジェット、ステータスバーの3つの場所があります。 –

+0

@フレデリックハミディ:おっと。私が間違えました。ごめんなさい。私は自分の問題を修正した。 – wecing

答えて

9

私が正しくあなたの質問を理解していれば、あなたがしたい:

  1. は、メニューバーの周りにライトグレーのパディングを取り除きます。
  2. 利用可能な領域を埋めるためにメニューバーを拡張せずに上記を行います。

したがって、あなたのウィジェット(あなたのメニューバーの下、すなわち、ボタンバー)の充填モードが場に出たの両方ができるので(わかりやすくするために、私は、それぞれ、button_hboxmenu_barとしてそれらを参照してくださいよ「ツールバー」と見なされます)。 gtk_box_pack_start()に渡されたboolean型レイアウトの引数を理解

はここに非常に重要です:

  • 最初の1、expandレイアウトが計算された後にウィジェットがその容器の中に残って空きスペースを消費する必要がある場合は、TRUEです。このようにしてパッケージ化されたウィジェットは、残りのスペースでも同じように競合します。

  • 2番目のfillは、ウィジェットがその中に配置されている代わりに消費するレイアウトスペースを埋める必要がある場合(ライトグレーのパディングがあります)TRUEです。

アイデアは、あなたが1持っているということである(以上、しかし今のところ1に固執しましょう)メインウィジェットmain_vboxで、そのウィジェットはTRUEexpandfillセットの両方で圧縮されています。衛星ウィジェットはexpandFALSEfillTRUEに設定されています。例えば:あなたのケースでは

+-------------------------------------------+ 
| 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); 
+2

醜いASCIIアートの謝罪、私は古い学校です:) –

+2

私はASCIIアートを愛しています: - P – wecing

+2

ASCIIアートのための非常に良い書き込み、余分な点:) – kalev

関連する問題