簡體   English   中英

如何使用自己的控件創建自定義GTK#Widget?

[英]How do you create a custom GTK# Widget with its own controls?

我試圖通過繼承Gtk.Bin來創建自定義GTK Widget。 我沒有使用Stetic GUI構建器。 此小部件將包含幾個標准Gtk小部件(VBox,標簽,按鈕等)。

public class MyWidget : Gtk.Bin
{
    public MyWidget : base ()
    {
        build ();
    }
    private void build ()
    {
        VBox vbox1 = new Vbox (true, 0);
        vbox1.PackStart (new Label ("MyWidget"), true, true, 0);
        this.Add (vbox1);
    }
}

同時,當我將自定義小部件添加到主窗口時,我什么也看不到。 顯示其他控件的窗口,為此自定義窗口小部件分配空間。 我希望在它的空間看到標簽“MyWidget”,但沒有任何顯示。 我逐步通過調試器中的代碼並調用它,但它在運行時沒有顯示。

任何幫助,將不勝感激。

需要覆蓋:

    protected override void OnSizeAllocated (Gdk.Rectangle allocation)
    {
        if (this.Child != null)
        {
            this.Child.Allocation = allocation;
        }
    }

    protected override void OnSizeRequested (ref Requisition requisition)
    {
        if (this.Child != null)
        {
            requisition = this.Child.SizeRequest ();
        }
    }

或者更有可能的是,ShowAll()是所有子項被打包后構建方法中的最后一行,除非您不希望默認情況下其中一些是可見的。

默認情況下,Gtk +控件(令人沮喪)不可見。

嘗試在Label上調用.Show()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM