请检查以下代码是否适合您:
enum
{
LIST_ITEM = 0,
N_COLUMNS
};
void view_selected_foreach_func(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer userdata)
{
char *value;
gtk_tree_model_get(model, iter, LIST_ITEM, &value, -1);
g_print("%s is selected\n", value);
g_free(value);
}
void gtk_tree_view_row_activated_event_handler(GtkWidget *widget, gpointer data)
{
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
gtk_tree_selection_selected_foreach(selection, view_selected_foreach_func, NULL);
}
我想实现你想要做的另一种方法是为 GtkTreeSelection更改信号定义一个处理程序。下面是一个小例子:
设置树视图:
list = gtk_tree_view_new();
...
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(list));
g_signal_connect(selection, "changed", G_CALLBACK(on_changed), label);
更改信号处理程序:
void on_changed(GtkWidget *widget, gpointer label)
{
GtkTreeIter iter;
GtkTreeModel *model;
char *value;
if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), &model, &iter))
{
gtk_tree_model_get(model, &iter, LIST_ITEM, &value, -1);
g_print("%s is selected\n", value);
g_free(value);
}
}
希望这会有所帮助,问候