GTK+图形化应用程序开发学习笔记(二十)—分栏列..
时间:2007-06-27 来源:湖光倒影
下面是我们应用上面两个函数的程序例子:
|
#include <gtk/gtk.h>
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_clist_set_column_justification(GTK_CLIST(clist),0,GTK_JUSTIFY_CENTER);/*设置列0的对齐方式为居中对齐*/ gtk_clist_set_column_width(GTK_CLIST(clist),0,50);/*设置列0的宽度为50*/ gtk_clist_set_shift(GTK_CLIST(clist),1,1,0,10);
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(); } |
下面是运行后的界面:
我们可以gtk_clist_get_text来得到指定单元格的数据,可以用gtk_clist_set_text来修改这些数据。
14.
|
名称:: |
gtk_clist_get_text gtk_clist_set_text |
|
功能: |
查看/设置单元格中的文本 |
|
头文件: |
#include <gtk/gtk.h> |
|
函数原形: |
gint gtk_clist_get_text( GtkCList *clist,gint row,gint column,gchar **text ); void gtk_clist_set_text( GtkCList *clist,gint row,gint column,const gchar *text ); |
|
参数: |
clist 分栏列表构件 text 单元格文本 |
|
返回值: |
无 |
gtk_clist_set_text可以设置单元格的文本,函数可以用新文本来覆盖原有的文本,row和column用来指定单元的位置,单元格的横纵位置都是从0开始的。
gtk_clist_get_text取得指定单元格的数据,这些指针都是指向存储在构件内部的数据指针,所以不应该修改或释放。引用的数据没有必要将不感兴趣的数据全部读出。任何返回值指针(除了GtkCList构件)都可以是NULL。
四、信号
与其他构件一样,GtkCList有一些信号供我们使用。GtkCList构件是从容器构件GtkContainer派生的,它有容器所具有的一些信号,还有下面这些附加信号:
select_row:选中一行时引发,该信号传递以下信息,依次是GtkCList *clist、gint row、
gint column、GtkEventButton *event、gpointer data。该信号的回调函数形势如下:
void select_row_callback(GtkWidget *widget,gint row,gint column,GtkEventButton *event,gpointer data);
unselect_row:用户对一行取消选择,引发这个信号。传递的信息与上一个信号一样。
click_column:选中某一列时引发。传递以下信息: GtkCList *clist、gint column、gpointer 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); } |
程序运行后当用户点击单元格,屏幕就打印相应的内容。










