Linux mobile development

欢迎到Linux mobile development(www.limodev.cn)上交流。Limodev主要致力于基于linux的嵌入式系统的学习和研究,包括内核、驱动、GUI、MMI、软件设计方法和软件优化等方面,欢迎大家加入,无论是高手还是新手,一起学习共同进步。下载BLOG示例代码请先到limodev.cn/bbs上注册,谢谢

原创 用GtkTreeView实现ListBox的示例收藏

GtkTreeView实现ListBox示例

 

转载时请注明出处:http://blog.csdn.net/absurd/

 

前段时间花了不少时间去研究GTK+的架构,但没有怎么关注具体控件的使用。大部控件都有示例代码,相信使用不会很难。今天要测试一下用GtkTreeView实现ListBox,发现没有GtkTreeView的示例代码,GTK+tutorial里也没有讲解。只好自己折腾,结果花了两个小时才搞定,写段代码做个备忘吧。

 

GtkWidget*

create_window1 (void)

{

  GtkWidget *window1;

  GtkWidget *scrolledwindow1;

  GtkWidget *treeview1;

  GtkTreeViewColumn* column;

  GtkTreeIter iter;

  GtkListStore* store;

  GtkCellRenderer* cell;

 

  char text[32] = {0};

  int i = 0 ;

  int n = 100;

 

  window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  gtk_window_set_title (GTK_WINDOW (window1), _("window1"));

 

  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);

  gtk_widget_show (scrolledwindow1);

  gtk_container_add (GTK_CONTAINER (window1), scrolledwindow1);

  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_SHADOW_IN);

 

  treeview1 = gtk_tree_view_new ();

  column = gtk_tree_view_column_new();

  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview1), column);

 

  cell = gtk_cell_renderer_text_new();

  gtk_tree_view_column_pack_start(column, cell, TRUE);

  gtk_tree_view_column_set_attributes(column, cell, "text", 0, NULL);

 

  column = gtk_tree_view_column_new();

  gtk_tree_view_append_column(GTK_TREE_VIEW(treeview1), column);

 

  store = gtk_list_store_new(1, G_TYPE_STRING);

  gtk_tree_view_set_model(treeview1, GTK_TREE_MODEL(store));

 

  for(i = 0; i < n; i ++)

  {

    sprintf(text, "text%d", i);

    gtk_list_store_append(store, &iter);

    gtk_list_store_set(store, &iter, 0, text, -1);

  }

 

  gtk_widget_show (treeview1);

  gtk_container_add (GTK_CONTAINER (scrolledwindow1), treeview1);

 

  /* Store pointers to all widgets, for use by lookup_widget(). */

  GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1");

  GLADE_HOOKUP_OBJECT (window1, scrolledwindow1, "scrolledwindow1");

  GLADE_HOOKUP_OBJECT (window1, treeview1, "treeview1");

 

  return window1;

} 

 

2006-11-12补充:

得到选中项的内容:

void

on_button1_clicked                     (gpointer user_data, GtkButton       *button)

{

    GValue value                = {0};

    GtkTreeIter iter            = {0};

    GtkTreeStore* store         = NULL;

    GtkTreeSelection* selection = NULL;

    GtkTreeView* treeview       = NULL;

 

    treeview = (GtkTreeView*)lookup_widget(GTK_WIDGET(user_data), "treeview1");

    selection = gtk_tree_view_get_selection(treeview);

    gtk_tree_selection_get_selected(selection, (GtkTreeModel**)&store, &iter);

    gtk_tree_model_get_value(GTK_TREE_MODEL(store), &iter, 0, &value);

 

    g_debug("%s\n", g_value_get_string(&value));

 

    return ;

}

 

~~end~~

发表于 @ 2006年09月07日 21:17:00|评论(loading...)

新一篇: 让GtkListStore支持数据延迟加载的构想 | 旧一篇: sscanf函数的高级用法

用户操作
[即时聊天] [发私信] [加为好友]
李先静
订阅我的博客
XML聚合  FeedSky
李先静的公告

BLOG评论请到


下载BLOG示例代码请先到上注册,谢谢。

文章分类
收藏
1.友情链接
0华清远见-嵌入式培训专家
aimself@CSDN(RSS)
directfb中文网站(RSS)
Eric's Little Hut
eye_of_back的专栏(RSS)
Linux Mobile Research
Phoenix@上海(RSS)
segments的专栏(RSS)
study's Blog(RSS)
tracestudio
伐木丁丁鸟鸣嘤嘤(RSS)
会飞的鱼的专栏(RSS)
创系的技术博客
小四的BLOG(RSS)
小马哥的博客(RSS)
开源电信(RSS)
御风剑客
新奇的BLOG
易军军的网络家
李吉群的专栏(RSS)
2.亲情链接
凤凰的幸福蓄水池(RSS)
我的相册
3.软界高手
Donald E. Knuth (RSS)
孟岩(RSS)
透明(RSS)
4.LinuxMobile
celinuxforum(RSS)
GPE(RSS)
maemo.org(RSS)
opensource.motorola
palowireless
5.XWindow
Jserv's blog(RSS)
Keith Packard(RSS)
6.技术资源
7.开源项目
freedesktop(RSS)
GNU(RSS)
GTK+(RSS)
matchbox(RSS)
pxa27x-linux/
8.我的BLOG镜像
absurd@chinaunix
absurd@msn
My English BLOG(RSS)
存档
Csdn Blog version 3.1a
Copyright © 李先静