GTK#应用程序的结构

时间:2017-02-01 20:03:22

标签: c# gtk gtk#

我是桌面应用程序的新手,我想创建一个只使用1个窗口的应用程序。首先,我使用“Login”按钮和2个文本字段创建一个简单的LOGIN表单。当用户成功登录窗口时,它会改变它的形式。我将一个picture固定在主屏幕上,用户可以通过单击右侧的1..4按钮在“屏幕”之间切换(我不知道如何正确命名)。我们有顶级面板,其中包含个人资料照片和昵称,这些照片和昵称仍然保留在MAIN表格中。

所以,主要问题是:我该怎么做?我应该使用哪些小部件以及如何实现GTK +(以及其他类似Qt等)中的动态内容?所以我想要答案,链接到涵盖这种情况的主题,指南和课程。一切都会有所帮助。

我阅读了很多文档,但似乎我找不到正确的信息只是因为我不知道如何为搜索查询制定问题。

谢谢,我希望能找到一些帮助。

P.S。我将在这个应用程序中使用C#和GTK#。

2 个答案:

答案 0 :(得分:1)

您只需要创建各种框( Gtk.VBox Gtk.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;
}

您可以找到unique window in GTK# here的全部源代码。 希望这会有所帮助。

答案 1 :(得分:0)

我建议你看看GtkStack。这将使您能够在单个窗口中拥有多个窗口小部件布局,并为您提供更改显示哪些窗口小部件的简便方法。 GtkStack通常与StackSwitcher一起使用。但是普通按钮也可以正常工作。我还可以建议您使用Glade来布置您的小部件吗?这将向您介绍您的小部件集的外观。

编辑:GtkStack似乎不适用于Gtk#。