代码之家  ›  专栏  ›  技术社区  ›  user8372292

如何获取激活行GTK+C的数据

  •  0
  • user8372292  · 技术社区  · 8 年前

    “行激活”信号激活后,如何获取所选行的数据?我在用C语言。

    void on_treeview1_row_activated()
    {
    //I want to get the data here
    }
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   José Fonte    8 年前

    的回调原型 row-activated 信号应为:

    void user_function (GtkTreeView       *tree_view,
                        GtkTreePath       *path,
                        GtkTreeViewColumn *column,
                        gpointer           user_data)
    

    假设模型/存储的第一列包含一些整数作为ID,第二列包含字符串:

    | ID |  TEXT      |
    +----+------------+
    | 12 | John Doe   |
    ...
    | 35 | Whatever   |
    +----+------------|
    

    所以回调函数应该是这样的:

    void on_treeview1_row_activated(GtkTreeView       *treeview, 
                                    GtkTreePath       *path, 
                                    GtkTreeViewColumn *column,
                                    gpointer userdata) {
    
       gint int_data;
       gchar *str_data;
    
       GtkTreeIter iter;
       GtkTreeModel *model = gtk_tree_view_get_model(treeview);
    
       if (gtk_tree_model_get_iter(model, &iter, path)) {
          gtk_tree_model_get (GTK_LIST_STORE(model), &iter, 0, &int_data, 1, &str_data, -1));
          // Here the variables int_data and str_data should be filled with
          // relevant data
       }
    }
    
        2
  •  1
  •   Gerhardh    8 年前

    在回调中,您将获得指向行的路径:

    static void on_treeview1_row_activated(GtkTreeView       *tree_view,
                                    GtkTreePath       *path,
                                    GtkTreeViewColumn *column,
                                    gpointer           user_data)
    {
      ...
    

    从那里你可以得到一个迭代器。。。

      GtkTreeIter   iter;
      if (gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path))
      {
    

    …并从列表存储中获取所需字段:

        gtk_tree_model_get(GTK_TREE_MODEL(list_store), &iter, 
                           INDEX_field_1, &param1,
                           INDEX_field_2, &param2,
                           ...
                           -1);
      }
    }
    
    推荐文章