在下面的用GTK3编译的示例中,当我单击entry字段时,GtkExpander会意外折叠。

#include <gtk/gtk.h>

static void destroy (GtkWidget *widget, gpointer data)
{
    gtk_main_quit ();
}

int main( int   argc,
          char *argv[] )
{
    gtk_init (&argc, &argv);

    GtkWidget *entry;
    entry = gtk_entry_new ();

    GtkWidget *expander;
    expander = gtk_expander_new ("test");
    gtk_expander_set_expanded (GTK_EXPANDER(expander), TRUE);
    gtk_container_add (GTK_CONTAINER(expander), entry);

    GtkWidget *window;
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_container_add (GTK_CONTAINER(window), expander);
    g_signal_connect (window, "destroy", G_CALLBACK (destroy), NULL);
    gtk_widget_show_all (window);

    gtk_main ();
    return 0;
}

但是,如果GtkExpander在gtk_widget_show_all()之后展开,则它不会崩溃,即:
    gtk_widget_show_all (window);
    gtk_expander_set_expanded (GTK_EXPANDER(expander), TRUE);

gtk_widget_show_all()之前展开小部件有什么问题?

最佳答案

这是GTK+中的一个错误,现在已修复。
有关详细信息,请参见:
https://bugzilla.gnome.org/show_bug.cgi?id=783145
https://bugzilla.gnome.org/show_bug.cgi?id=774134

关于c - GtkExpander意外崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44181644/

10-16 11:24