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

标签 c gtk gtk3 glade

激活“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/

相关文章:

c - g_io_channel 和 FIFO 导致 CPU 占用 100%

c - xfce 中 gnome_url_show() 的替代方案

haskell - 管道.并发: Sent signal is delivered one click later than expected

c++ - 在 AVX 内在函数 vec 中填充常量 float

c - C 宏的可选 [] 方括号

c - 用 C 解决此问题的时间限制

python - 如何处理来自 Gtk.Switch 的 "notify::active"信号? (MVC架构)

c - 当我将一个元素添加到链表数组中包含的链表时,为什么列表中的所有其他元素都会被删除?

css - css 文件中的 Gtk3 键绑定(bind)

c - 如何使用 `enum` 类型设置小部件属性,如 `GtkAttachOptions` ?我正在尝试模拟 `gtk_widget_set_vexpand` 以在 `gtk2` 上工作