如何在C中更改GTK树视图所选行的背景和/或前景色

时间:2019-01-09 02:28:03

标签: css colors background treeview row

我对gtk相当陌生,对CSS样式一无所知。我在网上找到的大多数示例都建议,可以使用CSS提供程序来更改treeview列的颜色/行的颜色。我正在专门尝试更改所选行的颜色。

使用Gtk检查器,我能够在“对象属性”中更改未选择的树视图行的颜色。所以我认为可以做到,但是我不知道如何在代码中做到这一点。而且我还没有找到能清楚解释它的文档。

我的问题是如何使用CSS和C代码实现更改行颜色?有人可以建议使用C解决方案还是可以向我指出正确的方向?我想使代码尽可能简单。

    void on_changed(GtkWidget *widget, gpointer view) // *** row clicked ***
{
    GtkTreeIter iter;
    GtkTreeModel *model;
    gchar *value;
// if the row is clicked then get the new selection
    gtk_tree_selection_get_selected(GTK_TREE_SELECTION(widget), &model, &iter); // won't work without this

    gtk_tree_model_get(model, &iter, COLUMN_ZERO, &value,  -1);

// set column header to selected row text.
GtkTreeViewColumn *col = gtk_tree_view_get_column (view, COLUMN_ZERO);  
gtk_tree_view_column_set_title(col, value);

//////////////////////////////////////////////
GtkCssProvider *provider = gtk_css_provider_new ();

GError *error = NULL;   
gtk_css_provider_load_from_path (provider,"custom.css", &error);
if(error) { printf("ERROR\n"); g_free(error); }

GtkStyleContext *context = gtk_widget_get_style_context (view);

gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

g_object_unref(provider);
//////////////////////////////////////////

    g_free(value);

} //*** End of ON_CHANGED **************

0 个答案:

没有答案