注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[gtk+] notify property change  

2009-05-03 09:55:12|  分类: gui_X |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
g_signal_connect() 可以通过 "notify::xxx" 去监听 xxx property 的变化。
---------------------------------------------
#include <gtk/gtk.h>

static void destroy(GtkWidget*, gpointer);
static void btn_click(GtkWidget*, gpointer);
static void prop_change(GObject*, GParamSpec*, gpointer);

int main(int argc, char *argv[])
{
    GtkWidget *window, *button;

    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Buttons");
    gtk_container_set_border_width(GTK_CONTAINER(window), 25);
    gtk_widget_set_size_request(window, 640, 480);

    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL);

    button = gtk_button_new_with_mnemonic("_Prop");
    gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NORMAL);

    g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(btn_click), NULL);
    g_signal_connect(G_OBJECT(button), "notify::relief", G_CALLBACK(prop_change), NULL);

    gtk_container_add(GTK_CONTAINER(window), button);
    gtk_widget_show_all(window);

    gtk_main();
    return 0;
}

static void
prop_change(GObject *button, GParamSpec *property, gpointer data)
{
    printf("prop [%s] changed!\n", property->name);
}

static void
btn_click(GtkWidget *window, gpointer data)
{
    g_object_set(window, "relief", GTK_RELIEF_NONE, NULL);
}

static void
destroy(GtkWidget *window, gpointer data)
{
    gtk_main_quit();
}

  评论这张
 
阅读(796)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017