GtkTreeView设置单元格背景和前景颜色

⌚Time: 2025-01-21 22:52:00

👨‍💻Author: Jack Ge

在gtk+2.0中GtkCellRenderer负责渲染Treeview,通过设置属性可以设置整列的单元格前景和背景色


GdkColor dirBgColor;
dirBgColor.red = 65000;
dirBgColor.green = 55000;
dirBgColor.red = 55000;

GdkColor dirFgColor;
dirFgColor.red = 55000;
dirFgColor.green = 65000;
dirFgColor.red = 55000;
//设置前景色
g_object_set(G_OBJECT(renderer), "foreground-gdk", &dirFgColor, NULL);
//设置背景色
g_object_set(G_OBJECT(renderer), "cell-background-gdk", &dirBgColor, NULL);

但是如果想要实现每行不同的颜色。也就是给每个单元格设置颜色,可以使用一个颜色列,通过gtk_tree_view_column_new_with_attributes这个函数把颜色列设置成属性。

GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes ("Name", renderer,
                                                      "text", NAME_COLUMN,
                                                      "background",COLOR_COLUMN,
                                                      NULL);

其中的第二个参数"background"就是指定COLOR_COLUMN列为背景颜色属性。也可以设置"foreground"就是前景色。

在添加新行数据时只需要添加颜色属性就行了

gtk_tree_store_set (treeStore, &iter,NAME_COLUMN,str ,COLOR_COLUMN,"green",-1);

实现的效果就是这种