激活“row-activated”信号后,如何获取选中行的数据?我正在使用 C 语言。
void on_treeview1_row_activated()
{
//I want to get the data here
}
最佳答案
row-activated
的回调原型(prototype)信号应该是:
void user_function (GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
这意味着您将拥有对 TreeView (和相关模型/商店)和选定路径的引用。这应该足以从激活的行中提取数据。
假设您的模型/商店的第一列是一些整数作为 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
}
}
关于c - 如何获取激活行的数据 GTK+ C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532565/