当前位置:  技术问答>linux和unix

关于libglade调用glade3编辑的xml之实例,请大家帮我分析分析。(代码整理版)

    来源: 互联网  发布时间:2016-05-16

    本文导语:  在glade3控件属性的信号一栏有个用户数据,从字面看,应当是对应回调函数的gpointer user_data. 但是情况似乎不是这样。 xml结构简单,为不影响阅读原文最后附上: hello(window)     layout1       username(entry)       p...

在glade3控件属性的信号一栏有个用户数据,从字面看,应当是对应回调函数的gpointer user_data.
但是情况似乎不是这样。

xml结构简单,为不影响阅读原文最后附上:
hello(window)
    layout1
      username(entry)
      password(entry)
      buttonOK(button)
程序采用cpp,网上常见的sayHelloToGlade为原型,为不影响阅读原文最后附上。

下面是修改gui.glade的运行对比。

button.clicked用户数据留空


Hello 123
your password 456
widget==buttonOK?1
user_data==buttonOK?0


button.clicked用户数据填hello


Hello 123
your password 456
widget==buttonOK?0
user_data==buttonOK?1

从运行结果分析,libglade自动调用的时候,两个参数是变化的。
xml中没有设定"用户数据"时,widget=事件产生控件, user_data=NULL
xml设定了"用户数据"时,widget=设定的控件对象,user_data=事件产生控件
请大家帮我看看是不是如此,另外请教,事件函数自动绑定的话,有没有更好的控件访问方法。
==gui.glade==




  
    GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 
    GTK_WIN_POS_MOUSE 
    
      
        True 
        
        
          
            100 
            True 
            True 
            False 
            456 
          
          
            73 
            110 
          
        
        
          
            100 
            True 
            True 
            123 
          
          
            72 
            77 
          
        
        
          
            100 
            20 
            True 
            你好,请输入 
          
          
            29 
            26 
          
        
        
          
            60 
            22 
            True 
            用户名 
          
          
            5 
            77 
          
        
        
          
            60 
            22 
            True 
            密码 
          
          
            5 
            110 
          
        
        
          
            95 
            41 
            True 
            True 
            True 
            OK 
            0 
            
          
          
            51 
            153 
          
        
      
    
  


==main.cpp==

#include 
#include 
#include 
GladeXML        gxml;
extern "C" {
void  on_buttonOK_clicked(GtkWidget *widget, gpointer user_data){
    GladeXML * xml_hello=glade_get_widget_tree(widget);
    GtkWidget * buttonOK=glade_xml_get_widget(xml_hello,"buttonOK");
    GtkEntry * text_username=(GtkEntry *)glade_xml_get_widget(&gxml,"username"); //用全局xml访问
    GtkEntry * text_password=(GtkEntry *)glade_xml_get_widget(xml_hello,"password");//用对象返回的xml
    const gchar * username=gtk_entry_get_text(text_username);
    const gchar * password=gtk_entry_get_text(text_password);
    std::cout 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编译安装libglade出错,求大神


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3