我是GTK的新手......我想首先隐藏标签,当我点击“点击”按钮时它会显示标签。我使用了gtk_widget_hide(标签)... bt它不工作。将使用固定容器不要改变它。 这是我的代码==>
#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; }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; }最满意答案
在gtk_widget_show_all(window)末尾使用gtk_widget_hide() ,因为你已经在固定容器中取了标签而固定包含在gtk_widget_show_all(window)然后你调用了gtk_widget_show_all(window)这意味着显示gtk_widget_show_all(window)的所有内容....这就是为什么必须像这样使用===>
#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; }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; }更多推荐
发布评论