如何在gtk上使用任何小部件的可见性?(How to use visibility of any widget on gtk?)

编程入门 行业动态 更新时间:2024-10-26 02:26:24
如何在gtk上使用任何小部件的可见性?(How to use visibility of any widget on gtk?)

我是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; }

更多推荐

本文发布于:2023-08-05 22:39:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1441440.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:部件   见性   如何在   widget   gtk

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!