Gtk-CRITICAL **:16:04:21.737:gtk_box_pack:断言'GTK_IS_WIDGET(子)'失败

问题描述 投票:0回答:1

我正在编译并运行一个gtk应用程序,当我尝试在hbox中放置一个按钮时运行时出现错误。这个错误是什么意思/我该如何解决这个问题。我通过终端运行时得到这个,当我按下运行此功能的按钮时GTK以某种方式打印出来:

void ButtonHandler(void) {
    GtkWidget (*Button) = NULL;
    GtkWidget (*Entry) = gtk_entry_new();
    GtkWidget (*Vbox) = gtk_vbox_new(0, 8);
    GtkWidget (*Hbox) = gtk_hbox_new(0, 8);
    FILE (*SelectedWorld);
    gtk_container_add(GTK_CONTAINER(Vbox), Hbox);
    gtk_box_pack_start(GTK_BOX(Vbox), Entry, 1, 1, 0);
    gtk_box_pack_start(GTK_BOX(Hbox),Button, 1, 1, 0);//<---- here is the problem
    printf("Button pushed\n");
}
c gtk gtk2
1个回答
0
投票

哦,你忘了用gtk_button_new初始化按钮。问题是它无法将NULL放入vbox或hbox中。干得好:

void ButtonHandler(void) {
    GtkWidget *Button = gtk_button_new_with_label("Button");// <--- add this
    GtkWidget *Entry = gtk_entry_new();
    GtkWidget *Vbox = gtk_vbox_new(0, 8);
    GtkWidget *Hbox = gtk_hbox_new(0, 8);
    FILE *SelectedWorld;

    gtk_container_add(GTK_CONTAINER(Vbox), Hbox);
    gtk_box_pack_start(GTK_BOX(Vbox), Entry, 1, 1, 0);
    gtk_box_pack_start(GTK_BOX(Hbox),Button, 1, 1, 0);
    printf("Button pushed\n");
}
© www.soinside.com 2019 - 2024. All rights reserved.