Jak wyświetlić na czerwono pewne dane w kontrolce GtkTreeView ?

0

Potrzebuję, aby pewne dane w kontrolce GtkTreeView były wyświetlane inaczej niż inne dane. Tzn. Chodzi o to, że jeśli wartość wyświetlana będzie miała wartość mniejszą od zera to w komórce ta wartość ma zostać wyświetlona w kolorze czerwonym. Gdyby się dało to także niech zostanie pogrubiona.
Wie ktoś jak to zrobić ?

0

Musisz "podpiąć" funkcją gtk_tree_view_column_set_cell_data_func funkcje, która będzie przetwarzała zawartość komórki i odpowiednio wyświetlała.

void przetworz_wyswietl( GtkTreeViewColumn * col, GtkCellRenderer * renderer, GtkTreeModel * model, GtkTreeIter * iter, gpointer user_data )
{
 gint wartosc;
 gchar buf[10];

 gtk_tree_model_get( model, iter, 1 /*nr kolumny w, której chcesz sprawdzać dane*/ , &wartosc, - 1 );

 if ( wartosc < 0 )
 {
    /* Ustawia kolor czerwony tekstu i pogrubia go */
    g_object_set( renderer, "foreground", "Red", "foreground-set", TRUE,  "weight", 700, NULL );
 }
 else
 {
    /* Ustwia wyświetlanie na domyślne wartości */
    g_object_set( renderer, "foreground-set", FALSE,  "weight", 400, NULL );
 }
  
  g_snprintf( buf, sizeof( buf ), "%d", wartosc );
  g_object_set( renderer, "text", buf, NULL );
}

main ()
{
[...]
gtk_tree_view_column_set_cell_data_func( kolumna, komorka, przetworz_wyswietl, NULL, NULL );
[...]
}
 

W przypadku kiedy wartości mniejsze od zera nie będzą w jednej kolumnie to pozostaje Ci dodać do modelu (GtkTreeModel) dodatkowe dane informujące o kolorze i pogrubieniu, wtedy zmian byś dokonywał w nim.

Więcej na ten temat znajdziesz na http://cpp0x.pl/kursy/Kurs-GTK+-C++/GtkTreeView/447

1 użytkowników online, w tym zalogowanych: 0, gości: 1