2011-09-11 61 views
1

如何在gtktreeview中更改葉子的字體?我想爲特定的葉設置粗體字體更改GtkTreeView中的字體

+0

哪種語言?如果您添加了您正在使用的語言,那麼您將獲得更多答案,並且還會添加一些示例代碼(即如何將項目添加到GtkTreeView)會有所幫助。 –

+0

也許這個線程是一些幫助給你:http://mail.gnome.org/archives/gtk-app-devel-list/2006-November/msg00187.html –

+0

謝謝你的回答。我已經看到了該線程,但我不明白如何爲樹中的現有列和特定節點設置字體。嗯,我正在用C編程。 – Paul

回答

1

我正在使用python,但要做到這一點的方式必須相同,只適應語法。

在GTK中,使用PANGO來更改字體。在這裏,在一個TreeView:

import pango, GTK 
.... 
cols = ['Date', 'Index', 'Program', 'Comments', 'Name'] 
self.treeView.cell = [None] * len(cols) 
.... 
fontT = pango.FontDescription("serif light Oblique 8") 
fontO = pango.FontDescription("serif bold 8") 
treeView.cell[2].set_property('font-desc', fontT) 
treeView.cell[3].set_property('font-desc', fontO) 

這使得列2( '綱要')和不同的字體3( '評論')。第3欄是粗體。

希望這有幫助。


編輯:

剛剛發現一個C鏈接:

http://www.ibm.com/developerworks/library/l-u-pango2/

0

您必須設置一個數據功能像這樣的列:

gtk_tree_view_column_set_cell_data_func(column, renderer, data_func, NULL, NULL); 

的數據函數可能看起來像這樣是:

void data_func (GtkTreeViewColumn *col, 
       GtkCellRenderer *renderer, 
       GtkTreeModel  *model, 
       GtkTreeIter  *iter, 
       gpointer   user_data) 
{ 
    gboolean active; 
    gtk_tree_model_get(model, iter, CHECKED_COLUMN, &active, -1); 

    g_debug("xxxxx %u", active); 
    if (active) 
    { 
    g_object_set(renderer, "weight", PANGO_WEIGHT_BOLD, NULL); 
    } 
    else 
    { 
    g_object_set(renderer, "weight", PANGO_WEIGHT_NORMAL, NULL); 
    } 
}