更改treeview gtk中列的字体颜色

时间:2012-12-22 21:16:21

标签: gtk cellrenderer gtktreeview

我有一个树视图,我想更改一列的文字颜色。

我怎么能这样做?

谢谢

2 个答案:

答案 0 :(得分:2)

(参考标准的C方法,到目前为止对Vala做的不多)

有几种方法可以实现这一目标。您可以更改文本cellrenderer(GtkCellRendererText)的设置,例如

g_object_set (your_text_cell_renderer, "foreground", 
              "red", "foreground-set", TRUE);

另一种方法是使用标记:

highlighted_txt = g_strconcat ("<span background='yellow' foreground='black'>", 
                               my_text, "</span>", NULL);
g_object_set (your_text_cell_renderer, "markup", highlighted_txt, NULL);

要在特定条件下单独更改每列的字体颜色, gtk_tree_view_insert_column_with_data_func或gtk_tree_view_column_set_cell_data_func 使用它们,它们在GtkTreeView的在线文档中描述。您可以使用 每列的不同文本单元格渲染器,以保持设置分开。

可以用类似的方式完成:

for (columns_cnt = 0; columns_cnt < NUMBER_OF_COLUMNS; columns_cnt++) {
  text_renderer = gtk_cell_renderer_text_new ();
  columns[columns_cnt] = gtk_tree_view_column_new_with_attributes
                         (column_header_txt[columns_cnt], text_renderer, 
                         "text", columns_cnt, NULL);
  gtk_tree_view_column_set_cell_data_func (columns[columns_cnt], text_renderer, 
                                           (GtkTreeCellDataFunc) 
                                           set_column_attributes, NULL, NULL);
}

...

static void set_column_attributes (GtkTreeViewColumn *cell_column, 
                                   GtkCellRenderer   *txt_renderer,
                                   GtkTreeModel      *cell_model, 
                                   GtkTreeIter       *cell_iter, 
                                   gpointer          pointer)
{
 // Use g_object_set or something else here.
}

答案 1 :(得分:1)

首先,您必须在模型中设置一个描述每行颜色的列。然后,您使用gtk_tree_view_insert_column_with_attributesforeground属性设置为颜色列的位置。