LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 582|回复: 0

在GtkList控件中如何找出选中项(selection)?

[复制链接]
发表于 2004-9-6 15:33:36 | 显示全部楼层 |阅读模式
我的程序是要求就是得到选中的listitem.
我参考了文档
http://www.huihoo.com/gnu/gtk+_FAQ/GTK+_FAQ.htm#AEN662
代码如下::
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gtk/gtk.h>
GtkWidget *list;
GtkWidget *hbox;
static void cb_select_item(GtkWidget *child, GtkWidget *list)
{
GList *items;
items=GTK_LIST(list)->selection;
printf("Selected Items:%s", items);
while (items) {
if (GTK_IS_LIST_ITEM(items->data))
printf("%d ", (guint)
gtk_object_get_user_data(items->data));
items=items->next;
}
printf("\n");
}
GtkWidget *create_list (void)
{
GtkWidget *scrolled_window;
GtkWidget *list_item;
int i;
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
gchar *list_items[]={
"Item0",
"Item1",
"foo",
"last Item",
};
gint nlist_items=sizeof(list_items)/sizeof(list_items[0]);
list=gtk_list_new();
gtk_list_set_selection_mode(GTK_LIST(list), GTK_SELECTION_SINGLE);
gtk_container_add(GTK_CONTAINER(hbox), list);
gtk_signal_connect (GTK_OBJECT (list), "select_child", GTK_SIGNAL_FUNC(cb_select_item), list);
gtk_widget_show (list);
for (i = 0; i < nlist_items; i++)
{
list_item=gtk_list_item_new_with_label(list_items);
gtk_object_set_user_data(GTK_OBJECT(list_item), (gpointer)i);
gtk_container_add(GTK_CONTAINER(list), list_item);
gtk_widget_show(list_item);
}
}
int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "aned Windows");
gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
gtk_widget_set_usize (GTK_WIDGET(window), 450, 400);
hbox = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox);
gtk_container_add (GTK_CONTAINER (window), hbox);
gtk_container_set_border_width (GTK_CONTAINER (hbox), 2);
list = create_list ();
gtk_widget_show (window);
gtk_main ();
return 0;
}

编译运行.我点击listitem中的Item0或己其它项,在终端上显示的是:
Gtk-WARNING **: invalid cast from `GtkListItem' to `GtkList'
Selected Itemsnull)

我是什么地方用错了吗!那又该如何修改了!
谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表