簡體   English   中英

GTK# 應用程序結構

[英]GTK# sctructure of application

我是桌面應用程序的新手,我想創建一個只使用 1 個窗口的應用程序。 首先,我創建了一個帶有“登錄”按鈕和 2 個文本字段的簡單登錄表單。 當用戶成功登錄時,窗口會改變它的形式。 我固定了一張主窗體的圖片,用戶可以通過單擊右側的 1..4 按鈕在“屏幕”(我不知道如何正確命名)之間切換。 我們有帶有個人資料照片和昵稱的頂部面板,它們一直保留在主窗體中的程序中。

所以,主要問題是:我應該怎么做? 我應該使用哪些小部件以及應該如何實現 GTK+(以及其他,如 Qt 等)中的動態內容? 所以我想要答案、涵蓋這種情況的主題鏈接、指南和課程。 任何事情都會有所幫助。

我閱讀了很多文檔,但似乎我無法找到正確的信息,因為我不知道如何為搜索查詢制定我的問題。

謝謝,我希望我能找到一些幫助。

PS 我將在這個應用程序中使用 C# 和 GTK#。

您只需要創建各種框( Gtk.VBoxGtk.HBox ),並根據需要隱藏/顯示它們。 我不知道 Gtk.Stack,但我敢打賭它使用相同的原理,也許做了一些優化。

class UniqueWindowView: Gtk.Window
{
    void Build()
    {
        var vbMainBox = new Gtk.VBox();

        this.vbLoginPage = this.BuildLoginPage();
        this.vbNotebook = this.BuildNotebook();

        vbMainBox.PackStart( this.vbLoginPage, true, true, 100 );
        vbMainBox.PackStart( this.vbNotebook, true, true, 5 );
        vbMainBox.Show();

        this.Add( vbMainBox );
        this.SetSizeRequest( 600, 400 );
        this.Show();
    }

    // ...

    public Gtk.VBox vbLoginPage {
        get; private set;
    }

    public Gtk.VBox vbNotebook {
        get; private set;
    }

    public Gtk.Notebook nbNotebook {
        get; private set;
    }

    public Gtk.Button btLogin {
        get; private set;
    }
}

運行此方案后,您必須准備顯示或隱藏相應的框。

class UniqueWindowCtrl
{
    public UniqueWindowCtrl()
    {
        this.view = new UniqueWindowView();
        this.view.DeleteEvent += (o, args) => this.Quit();
        this.view.btLogin.Clicked += (sender, e) => this.ShowNotebook();
    }

    public void Start()
    {
        this.ShowLogin();
    }

    public void ShowLogin()
    {
        this.view.vbLoginPage.Show();
        this.view.nbNotebook.Hide();
    }

    public void ShowNotebook()
    {
        this.view.vbLoginPage.Hide();
        this.view.nbNotebook.Show();
    }

    void Quit()
    {
        this.view.Hide();
        Gtk.Application.Quit();
    }

    UniqueWindowView view;
}

您可以在此處找到GTK# 中唯一窗口的完整源代碼。 希望這可以幫助。

我建議你看看GtkStack 這將使您能夠在單個窗口中擁有多個小部件布局,並為您提供一種更改顯示的小部件的簡單方法。 GtkStack 通常與StackSwitcher一起 使用 然而,普通按鈕也能正常工作。 我還可以建議您使用Glade來布置您的小部件嗎? 這將向您展示您的小部件集的外觀。

編輯:GtkStack 似乎不適用於 Gtk#。

暫無
暫無

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

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