0

ツリービューがあり、1 つの列のテキストの色を変更したいと考えています。

どうすればこれを行うことができますか??

ありがとう

4

2 に答える 2

2

(標準の 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.
}
于 2012-12-23T10:33:57.317 に答える
1

まず、各行の色を説明するモデル内の列を設定する必要があります。次に、gtk_tree_view_insert_column_with_attributesforegroundを使用して、属性をカラー列の位置に設定します。

于 2012-12-22T23:12:35.833 に答える