web-dev-qa-db-ja.com

Gladeでウィジェットをどのように並べ替えますか?

Gladeウィジェットツリーでウィジェットを並べ替える方法を教えてください。

たとえば、次の部分的なツリーを含むGladeアプリケーションがあるとします。

box1 (GtkBox)
|--button1 (GtkButton)
|--button2 (GtkButton)
|--button3 (GtkButton)

どのようにして位置を入れ替えることができますか?たとえば、button1 button2、そのため、button2はUIでbutton1の上にありますか?

3
strugee

さらに調査したところ、ウィジェットツリーパネルから順序を変更できないようです。ただし、ビジュアルエディタで順序を変更することはできます。

ツールバーには、カーソルモードを選択するためのボタンが2つあります。カーソルの直後のボタンをクリックします。矢印が4つあるはずです。次に、移動するウィジェットをクリックし、移動先にドラッグします。

1
strugee

これに遭遇し、受け入れられた答えが間違っているか、少なくともGladeの現在のバージョンでは正しくないことがわかりました。

Glade内から、PositionタブのPackingプロパティを調整できます。このプロパティの値は、その親内のウィジェットのインデックスを決定します。

OPの例では:

box1 (GtkBox)
|--button1 (GtkButton) (Position: 0)
|--button2 (GtkButton) (Position: 1)
|--button3 (GtkButton) (Position: 2)

各ボタンのPosition値はそれぞれ0、1、2です。 Positionの値を変更する場合、button2を0にすると、上に移動し、button1の場合、Position値は1になり、ツリー内の順序と、デザイナーと最終的なアプリケーションでの表示方法の両方が変更されます。

box1 (GtkBox)
|--button2 (GtkButton) (Position: 0)
|--button1 (GtkButton) (Position: 1)
|--button3 (GtkButton) (Position: 2)
0
ForeverZer0