GTK+中文社区(gtk.awaysoft.com)

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 5716|回复: 1

【转】用GtkTreeView实现ListBox示例

[复制链接]
  • TA的每日心情
    奋斗
    2021-11-19 13:15
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2009-4-25 16:09:03 | 显示全部楼层 |阅读模式
    转载时请注明出处和作者联系方式
    文章出处:http://www.limodev.cn/blog
    作者联系方式:李先静 <xianjimli at hotmail dot com>
    前段时间花了不少时间去研究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;
    }
    得到选中项的内容:
    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 ;
    }
  • TA的每日心情
    无聊
    2013-9-23 22:35
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2009-4-25 16:09:03 | 显示全部楼层

    【转】用GtkTreeView实现ListBox示例

    不是有combo_box吗?
    *滑块验证:
    您需要登录后才可以回帖 登录 | 马上加入

    本版积分规则

    申请友链|Archiver|小黑屋|手机版|GTK+中文社区 ( 粤ICP备13080851号 )

    我要啦免费统计

    GMT+8, 2024-4-28 03:51 , Processed in 0.022148 second(s), 7 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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