代码之家  ›  专栏  ›  技术社区  ›  Thomas An

如何将GTK按钮引用到GTK+2中GtkNotebook的多页

  •  0
  • Thomas An  · 技术社区  · 6 年前

    谢谢你提前帮忙。
    我做了一个按钮,可以参考笔记本的多页。所以我写了一些代码,如下所示,但它并没有像我预期的那样工作。

    预期:每页中都会显示一个标记为“下一页”的按钮。如果我单击它,那么窗口将显示下一页。

    我应该在每页上加四个按钮吗?但如果可以的话,我只想用一个按钮来完成这项任务。

    GtkWidget *notebook;
    
    static GtkWidget*
    init_notebook_widgets (void)
    /* Return: GtkNotebook pointer */
    {
        GtkWidget *page1, *page2, *page3, *page4, \
                  *label1, *label2, *label3, *label4, \
                  *next_button;
    
        notebook = gtk_notebook_new ();
        next_button = gtk_button_new_with_mnemonic ("_Next page");
        g_signal_connect (G_OBJECT (next_button), "clicked",
                          G_CALLBACK (go_next_page), NULL);
    
        page1 = gtk_vbox_new (TRUE, 5);
        label1 = gtk_label_new ("This is first page!");
        gtk_box_pack_start_defaults (GTK_BOX (page1), label1);
        gtk_box_pack_start_defaults (GTK_BOX (page1), next_button);
    
        page2 = gtk_vbox_new (TRUE, 5);
        label2 = gtk_label_new ("This is second page!");
        gtk_box_pack_start_defaults (GTK_BOX (page2), label2);
        gtk_box_pack_start_defaults (GTK_BOX (page2), next_button);
    
        page3 = gtk_vbox_new (TRUE, 5);
        label3 = gtk_label_new ("This is third page!");
        gtk_box_pack_start_defaults (GTK_BOX (page3), label3);
        gtk_box_pack_start_defaults (GTK_BOX (page3), next_button);
    
        page4 = gtk_vbox_new (TRUE, 5);
        label4 = gtk_label_new ("This is fourth page!");
        gtk_box_pack_start_defaults (GTK_BOX (page4), label4);
        gtk_box_pack_start_defaults (GTK_BOX (page4), next_button);
    
        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page1,
                                  gtk_label_new ("Page 1"));
        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page2,
                                  gtk_label_new ("Page 2"));
        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page3,
                                  gtk_label_new ("Page 3"));
        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page4,
                                  gtk_label_new ("Page 4"));
    
        gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_BOTTOM);
    
        return notebook;
    }
    
    static void
    go_next_page (GtkWidget *widget,
                  gpointer data)
    {
        gtk_notebook_next_page (GTK_NOTEBOOK (notebook));
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Alexander Dmitriev    6 年前

    gtkwidget只能放置在一个容器中。您应该为每个页面创建按钮(顺便说一句,它在最后一页上会有什么行为?)或者创建一个按钮,但将其打包在笔记本之外(同样的问题也适用)

    看看GtkAssistant

    推荐文章