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()函数将原本的构件移除,再向窗口中添加新的构件。希望能帮你解决问题。

    笨鸟先飞
  • 相关阅读:
    App调试的几个命令实践【转】
    解决sdk更新时候报错 http://dl-ssl.google.com/android上不去,链接拒绝
    fastjson序列化排序问题
    Java中的四种引用
    equal&==&hashcode
    ThreadPool线程池的关注点
    JVM的本地方法栈
    JVM的堆分配
    JVM的类装载子系统
    JVM的数据类型
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12868667.html
Copyright © 2011-2022 走看看