免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1388 | 回复: 0

[Linux] GTK+菜单和文本输入框不能同时出现 ,怎么解决 [复制链接]

论坛徽章:
0
发表于 2014-05-29 09:48 |显示全部楼层
  1. #include<gtk/gtk.h>
  2. int main(int argc,char *argv[]){
  3. GtkWidget *vbox;
  4. GtkWidget *menubar;
  5. GtkWidget *filemenu;
  6. GtkWidget *file;
  7. GtkWidget *new;
  8. GtkWidget *open;
  9. GtkWidget *quit;

  10. GtkWidget *window;
  11. GtkWidget *table;
  12. GtkWidget *label1;
  13. GtkWidget *label2;
  14. GtkWidget *label3;
  15. GtkWidget *entry1;
  16. GtkWidget *entry2;
  17. GtkWidget *entry3;

  18. gtk_init(&argc, &argv);
  19. window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  20. gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  21. gtk_window_set_default_size(GTK_WINDOW(window),250,200);
  22. gtk_window_set_title(GTK_WINDOW(window),"Information");
  23. gtk_container_set_border_width(GTK_CONTAINER(window),10);

  24. vbox = gtk_vbox_new(FALSE, 0);
  25. gtk_container_add(GTK_CONTAINER(window),vbox);
  26. table = gtk_table_new(3, 2, FALSE);
  27. gtk_container_add(GTK_CONTAINER(window),table);

  28. menubar = gtk_menu_bar_new();
  29. filemenu = gtk_menu_new();
  30. file = gtk_menu_item_new_with_label("FILE");
  31. new = gtk_menu_item_new_with_label("New");
  32. open = gtk_menu_item_new_with_label("Open");
  33. quit = gtk_menu_item_new_with_label("Quit");
  34. gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu);
  35. gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), new);
  36. gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), open);
  37. gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quit);
  38. gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file);
  39. gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3);

  40. label1 = gtk_label_new("Name");
  41. label2 = gtk_label_new("Student No.");
  42. label3 = gtk_label_new("Major");
  43. gtk_table_attach(GTK_TABLE(table),label1, 0, 3, 0, 1,
  44. GTK_FILL | GTK_SHRINK,GTK_FILL | GTK_SHRINK, 5, 5);
  45. gtk_table_attach(GTK_TABLE(table),label2, 0, 3, 1, 2,
  46. GTK_FILL | GTK_SHRINK,GTK_FILL | GTK_SHRINK, 5, 5);
  47. gtk_table_attach(GTK_TABLE(table),label3, 0, 3, 2, 3,
  48. GTK_FILL | GTK_SHRINK,GTK_FILL | GTK_SHRINK, 5, 5);
  49. entry1 = gtk_entry_new();
  50. entry2 = gtk_entry_new();
  51. entry3 = gtk_entry_new();
  52. gtk_table_attach(GTK_TABLE(table),entry1, 1, 4, 0, 1,
  53. GTK_FILL | GTK_SHRINK,GTK_FILL | GTK_SHRINK, 5, 5);
  54. gtk_table_attach(GTK_TABLE(table),entry2, 1, 4, 1, 2,
  55. GTK_FILL | GTK_SHRINK,GTK_FILL | GTK_SHRINK, 5, 5);
  56. gtk_table_attach(GTK_TABLE(table),entry3, 1, 5, 2, 3,
  57. GTK_FILL | GTK_SHRINK,GTK_FILL | GTK_SHRINK, 5, 5);

  58. gtk_widget_show(table);
  59. gtk_widget_show(label1);
  60. gtk_widget_show(label2);
  61. gtk_widget_show(label3);
  62. gtk_widget_show(entry1);
  63. gtk_widget_show(entry2);
  64. gtk_widget_show(entry3);
  65. gtk_widget_show(window);
  66. gtk_widget_show_all(window);

  67. g_signal_connect(window, "destroy",G_CALLBACK(gtk_main_quit),NULL);
  68. g_signal_connect_swapped(G_OBJECT(window),"destroy",
  69.                          G_CALLBACK(gtk_main_quit),NULL);
  70. g_signal_connect(G_OBJECT(quit),"activate",G_CALLBACK(gtk_main_quit),NULL);
  71. gtk_main();

  72. return 0;
  73. }


复制代码
提示的警告是这个,该如何改进?
Gtk-WARNING **: Attempting to add a widget with type GtkTable to a GtkWindow, but as a GtkBin subclass a GtkWindow can only contain one widget at a time; it already contains a widget of type GtkVBox
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP