【问题标题】:How to Highlight GTKTreeView Row in C as if was selected with mouse如何在 C 中突出显示 GTKTreeView 行,就好像用鼠标选择了一样
【发布时间】:2020-01-30 21:03:59
【问题描述】:

我要么看得太深要么什么的。我有一个从文件填充的简单 GTKTreeVew。行数由 CSV 文件中的行数决定。

我可以从循环中的每一行获取数据,但似乎可以掌握如何突出显示该行。我可以选择它来获取它的路径并打印行号,但不知道如何在代码中突出显示它...

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 gtk row highlight


【解决方案1】:

我用谷歌搜索了大约一周并看到其他语言的其他类似示例,终于弄明白了。

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++;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多