Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use visibility of any widget on gtk?

Tags:

c

gtk

gtk3

I am new on GTK... I want to do hide the label at first and when I will click on the "click" button it will show the label.I used gtk_widget_hide(label)...bt it is not working.and will use fixed container don't change it. here is my code ==>

#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;
}
like image 828
user Avatar asked Mar 25 '16 20:03

user


1 Answers

use gtk_widget_hide() at end of gtk_widget_show_all(window) because u have taken label in Fixed container and Fixed contain is in window.and then u called gtk_widget_show_all(window)thats means show the all contents that have in window....thats why have to use like this===>

#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;
}
like image 52
Sudip Das Avatar answered Oct 19 '22 06:10

Sudip Das