如何在 gtk 上使用任何小部件的可见性?

How to use visibility of any widget on gtk?

我是 GTK 新手... 我想首先隐藏标签,当我点击 "click" 按钮时,它会显示 label.I 使用的 gtk_widget_hide(label)...bt 它不是 working.and 将使用固定容器不要更改它。 这是我的代码 ==>

#include <gtk/gtk.h>

void destroy(GtkWidget* widget,gpointer *data){
    /*gtk_main_quit();*/
    g_print ("hide\n");

}

int main(int argc, char *argv[])
{
    GtkWidget *window,*button,*label,*fixed;

    gtk_init(&argc,&argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"Demo");
    gtk_widget_set_size_request(window,200,400);
    gtk_container_set_border_width(GTK_CONTAINER(window),10);

    fixed = gtk_fixed_new();

    button = gtk_button_new_with_mnemonic("Click");
    gtk_widget_set_size_request(button,20,20);

    label = gtk_label_new("BOOM!!");
    gtk_widget_hide(label);

    g_signal_connect_swapped(G_OBJECT(button),"clicked",G_CALLBACK(destroy),NULL);

    gtk_fixed_put(GTK_FIXED(fixed),button,0,0);
    gtk_fixed_put(GTK_FIXED(fixed),label,30,30);

    gtk_container_add(GTK_CONTAINER(window),fixed);


    gtk_widget_show_all(window);

    gtk_main();
    return 0;
}

gtk_widget_show_all(window) 末尾使用 gtk_widget_hide() 因为你在 Fixed 容器中使用了标签并且 Fixed 包含在 window.and 中然后你调用了 gtk_widget_show_all(window) 那意味着显示 window 中的所有内容......这就是为什么必须使用 like这===>

#include <gtk/gtk.h>

void destroy(GtkWidget* label,gpointer *data){
    /*gtk_main_quit();*/
    g_print ("hide\n");
    gtk_widget_show(label);

}

int main(int argc, char *argv[])
{
    GtkWidget *window,*button,*label,*fixed;

    gtk_init(&argc,&argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"Demo");
    gtk_widget_set_size_request(window,200,400);
    gtk_container_set_border_width(GTK_CONTAINER(window),10);

    fixed = gtk_fixed_new();

    button = gtk_button_new_with_mnemonic("Click");
    gtk_widget_set_size_request(button,20,20);

    label = gtk_label_new("BOOM!!");


    g_signal_connect_swapped(G_OBJECT(button),"clicked",G_CALLBACK(destroy),label);

    gtk_fixed_put(GTK_FIXED(fixed),button,0,0);
    gtk_fixed_put(GTK_FIXED(fixed),label,30,30);

    gtk_container_add(GTK_CONTAINER(window),fixed);


    gtk_widget_show_all(window);
    gtk_widget_hide(label);
    gtk_main();
    return 0;
}