谢谢你提前帮忙。
我做了一个按钮,用来指代多页笔记本。所以我写了一些代码如下,但它没有像我预期的那样工作。
预期:每页显示一个标记为“下一页”的按钮。如果单击它,则窗口将显示下一页。
我应该在每一页上扣四个钮扣吗?但如果可以的话,我只想用一个按钮来完成这个任务。

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));
}

最佳答案

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

关于c - 如何在GTK + 2中将GtkButton引用到GtkNotebook的多个页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49316563/

10-09 13:38