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

    笨鸟先飞
  • 相关阅读:
    c#读取excel导入到数据库中
    查找同一个表中某个字段中有相同的数据
    Url传值编码UrlEncode和解码UrlDecode
    FOR ALL ENTRIES IN
    设置自动增长列从哪里开始增长
    More than 100 ABAP Interview Faq's(1)
    使用__FILE__和__LINE__
    Windows API封装:LoadLibrary/FreeLibrary
    Singleton模式笔记
    C++接口着色技术
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12868667.html
Copyright © 2011-2022 走看看