我有一个树视图,我想更改一列的文字颜色。
我怎么能这样做?
谢谢
答案 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_attributes将foreground
属性设置为颜色列的位置。