我对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 **************