ツリービューがあり、1 つの列のテキストの色を変更したいと考えています。
どうすればこれを行うことができますか??
ありがとう
(標準の C メソッドを参照すると、これまで Vala をあまり使用していません)
これを実現するにはいくつかの方法があります。テキスト セルレンダラー (GtkCellRendererText) の設定を変更できます。例を次に示します。
g_object_set (your_text_cell_renderer, "foreground",
"red", "foreground-set", TRUE);
もう 1 つの方法は、マークアップを使用することです。
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.
}
まず、各行の色を説明するモデル内の列を設定する必要があります。次に、gtk_tree_view_insert_column_with_attributesforeground
を使用して、属性をカラー列の位置に設定します。