pls、以下のコードが機能するかどうかを確認してください。
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);
}
}
これが役に立てば幸いです、よろしく