zoukankan      html  css  js  c++  java
  • linux中的gtk 编程的页面切换

    在我们使用gtk这个工具时,有时想在同一个窗口中,根据选择来显示不同的操作菜单,这篇博文主要是解决此类问题

    //创建窗口
    GtkWidget *CreateMenuMain()                                             
     {
         GtkWidget *window;
         GtkWidget *button;       
         GtkWidget *fixed;
         window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
         char title[] = "test";
         gtk_window_set_title(window,title);
         gtk_widget_set_usize(GTK_WINDOW(window),500,400);
         change_background(window,500,400,"play1.jpg");
         gtk_signal_connect(GTK_OBJECT(window),"delete_event",G_CALLBACK(gtk_    main_quit),NULL);
          
          button = gtk_button_new_with_label("切换菜单");
          gtk_widget_set_usize(GTK_BUTTON(button),100,100) 
          fixed = gtk_fixed_new();
          gtk_fixed_put(GTK_FIXED(fixed),button);
          gtk_container_add(GTK_CONTAINER(window),fixed);
          gtk_fixed_put(GTK_FIXED(fixed),button,250,200);
         gtk_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(button_deal),fixed);
         gtk_widget_show_all(window);      
     }  
     //按钮的回调函数
    void button_deal(GtkWidget *button,gpointer)
    {
       GtkFixed *fixed_del = (GtkFixed *)data//进行类型强转
      gtk_container_remove(GTK_CONTAINER(window),fixed_del);
      GtkWidget *fixed;
      fixed = gtk_fixed_new();
      gtk_container_add(GTK_CONTAINER(window),fixed);
      gtk_widget_show_all(window);
    }

    其实也很简单,就是用gtk_container_remove()函数将原本的构件移除,再向窗口中添加新的构件。希望能帮你解决问题。

    笨鸟先飞
  • 相关阅读:
    JZOJ 4043. 【雅礼集训2015Kzf】洪水
    JZOJ 5451.Genocide
    P4719 【模板】"动态 DP"&动态树分治
    [NOIP2018 提高组] 保卫王国
    【NOIP2017提高组正式赛】列队
    vuex的总结
    height:100vh
    从URL输入到页面展现到底发生什么
    JS的空数组是true还是false(内附JS类型转换表)
    Vue拼图验证组件使用教程
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12868667.html
Copyright © 2011-2022 走看看