分享

GTK:分栏列表信号

 217小月月坑 2015-02-10

与其他构件一样,GtkCList有一些信号供我们使用。GtkCList构件是从容器构件GtkContainer派生的,它有容器所具有的一些信号,还有下面这些附加信号:

select_row:选中一行时引发,该信号传递以下信息,依次是GtkCList *clistgint row

gint columnGtkEventButton *eventgpointer data。该信号的回调函数形势如下:

       void select_row_callback(GtkWidget *widget,gint row,gint column,GtkEventButton *event,gpointer data);

unselect_row:用户对一行取消选择,引发这个信号。传递的信息与上一个信号一样。

click_column:选中某一列时引发。传递以下信息: GtkCList *clistgint columngpointer data

 

下面是程序例子:

#include <gtk/gtk.h>

 

void select_row_callback(GtkWidget *clist,gint row,gint column,GdkEventButton *event,gpointer data);

 

int main(int argc,char *argv[ ])

{

GtkWidget *window;

GtkWidget *clist;

gchar *text1[3]={“刘备”,””,”23”}; /*定义列表项数据*/

gchar *text2[3]={“关羽”,””,”22”};

 

gtk_init(&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_signal_connect(GTK_OBJECT(window),”delete_event”,GTK_SIGNAL_FUNC(gtk_main_quit),NULL);

gtk_widget_set_size_request(window,200,150);

gtk_container_set_border_width(GTK_CONTAINER(window),10);

 

clist=gtk_clist_new(3);

gtk_clist_set_column_title(GTK_CLIST(clist),0,”姓名”);

gtk_clist_set_column_title(GTK_CLIST(clist),1,”姓别”);

gtk_clist_set_column_title(GTK_CLIST(clist),2,”年龄”);

 

gtk_clist_prepend(GTK_CLIST(clist),text1);/*将列表项数据添加到列表*/

gtk_clist_prepend(GTK_CLIST(clist),text2);

 

gtk_signal_connect(GTK_OBJECT(clist),”select_row”,GTK_SIGNAL_FUNC(select_row_callback),NULL);/*捕捉select_row信号*/

 

gtk_clist_column_titles_show(GTK_CLIST(clist));

gtk_container_add(GTK_CONTAINER(window),clist);

 

gtk_widget_show(clist);

gtk_widget_show(window);

gtk_main();

}

 

void select_row_callback(GtkWidget *clist,gint row,gint column,GdkEventButton *event,gpointer data)/*设置select_row信号的回调函数*/

{

gchar *text=NULL;

gtk_clist_get_text(GTK_CLIST(clist),row,column,&text);

gprint(“%s/n”,text);

}

       程序运行后当用户点击单元格,屏幕就打印相应的内容。

 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多