Как выделить строку GTKTreeView в C, как если бы она была выделена мышью - PullRequest
0 голосов
/ 31 января 2020

Я либо смотрю слишком глубоко, либо как-то так. У меня есть простой GTKTreeVew, который заполняется из файла. Количество строк определяется количеством строк в CSV-файле.

Я могу получить данные из каждой строки в al oop, но может показаться, что gr asp подсвечивает строку. Я могу выбрать его, получив его путь, и напечатать номер строки, но не знаю, как выделить его в коде ...

selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtk_tree_view));
if (gtk_tree_selection_get_selected(selection, &model, &iter))
{
    path = gtk_tree_model_get_path (model, &iter);
    path_string = gtk_tree_path_to_string (path);
    row = atoi(path_string);
    set_active_test_row_single(row);

    printf("\nSelected ROW is %d\n", row);

}

Спасибо за любые ссылки, отзывы и c. Не могу найти функцию, чтобы "выделить" номер строки. То же самое «выделение», которое происходит при щелчке мышью по строке.

1 Ответ

0 голосов
/ 14 февраля 2020

Я наконец-то понял это с помощью Google около недели и увидел другие похожие примеры на других языках.

void single_button_clicked_cb(GtkWidget *widget, gpointer data)
{
    static int         index = 0;
    GtkTreeIter iter;
    char buf[9];
    GtkTreeModel *model;
    GtkAdjustment *vadjustment;
    int i;

    printf("\nScroll Active test row to %d\n",index);

    sprintf(buf,"%d",index);

    gtk_widget_grab_focus (GTK_WIDGET(gtk_tree_view));

    GtkTreePath *path = gtk_tree_path_new_from_string(buf);

    gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW (gtk_tree_view),path, NULL,FALSE, 0.0, 0.0);

    gtk_tree_view_set_cursor (gtk_tree_view,path,NULL,FALSE); // works but doesn't scroll

    gtk_tree_path_free(path);

    index++;
}
...