1

Monodevelop を使用して GUI を作成しています。MainWindow 内に含まれる HBox 内にネストされた多数のウィジェットが既にあります。ただし、メニューバーを一番上に配置するには、VBox を追加する必要があります。私の質問は、MonoDevelop で VBox を既存の HBox の親として追加するにはどうすればよいですか?

VBox をウィンドウにドラッグしても何も起こらず、メニュー オプションが見つかりません。

4

2 に答える 2

2

グラフィック デザイナーではなく、コードで HBox (場合によっては VBox も) を作成することで、これを行うことができます。

例えば:

VBox vb = new VBox();   // Create a new VBox
vb.Visible = true;      // Make sure it is visible
base.Add (vb);          // Add the VBox to the base top window
base.Move (vb,0,0);     // Make sure the VBox is placed at top-left of the window

HBox hb = new HBox();   // Create a new HBox
hb.Visible = true;      // Make sure it is visible
vb.Add (hb);            // Add the HBox to the VBox (so VBox is the parent)

HBox がグラフィック デザイナーで既に作成されていて、この方法でオンザフライで再作成したくない場合は、それに応じてコードを調整します。たとえば、既存の HBox 名が hb の場合は、次のようにします。

VBox vb = new VBox();   // Create a new VBox
vb.Visible = true;      // Make sure it is visible
base.Add (vb);          // Add the VBox to the base top window
base.Move (vb,0,0);     // Make sure the VBox is placed at top-left of the window
vb.Add (hb);            // Add the HBox to the VBox (so VBox is the parent)

もちろん、すべてのメニュー項目をコードでも VBox に追加する必要がありますが、同じルールに従って非常に簡単です。利用可能なメンバー関数とその使用方法がわからない場合は、新しいプロジェクトを作成し、(VBox を使用して) デザイナーでメニューを設計して保存します。ここで、フォルダーgtk-guiの下のファイルを確認します。メイン コード ファイル (メニューが配置された場所) と同じ名前のファイルには、元のプロジェクトで再作成するために必要な正確なコードが含まれています。

それが役立つことを願っています!

于 2012-09-12T16:25:07.633 に答える
0

すべてのコントロールを含むパレット ウィジェットをコピーし、新しいパレットにドラッグして貼り付けることができます。数日前に、コントロールをカスタム ウィジェットに移動することにしたときに、これを行う必要がありました。

または、他の回答のようにコーディングすることもできますが、コピー/貼り付けの方が速いと思います。

于 2012-09-24T15:33:36.993 に答える