如何获取激活行的数据 GTK+ C
How to get the data of an activated row GTK+ C
"row-activated"信号激活后,如何获取选中行的数据?我用的是C语言。
void on_treeview1_row_activated()
{
//I want to get the data here
}
没有你的代码我只能给个大概的方向:
在您的回调中,您获得了您的行的路径:
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, ¶m1,
INDEX_field_2, ¶m2,
...
-1);
}
}
row-activated
信号的回调原型应该是:
void user_function (GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
这意味着您将拥有对树视图(和相关 model/store)和选定路径的引用。这应该足以从激活的行中提取数据。
假设您的 model/store 第一列有一些整数作为 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
}
}
"row-activated"信号激活后,如何获取选中行的数据?我用的是C语言。
void on_treeview1_row_activated()
{
//I want to get the data here
}
没有你的代码我只能给个大概的方向:
在您的回调中,您获得了您的行的路径:
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, ¶m1,
INDEX_field_2, ¶m2,
...
-1);
}
}
row-activated
信号的回调原型应该是:
void user_function (GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
这意味着您将拥有对树视图(和相关 model/store)和选定路径的引用。这应该足以从激活的行中提取数据。
假设您的 model/store 第一列有一些整数作为 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
}
}