Изменить шрифт в GtkTreeView - PullRequest
       15

Изменить шрифт в GtkTreeView

1 голос
/ 11 сентября 2011

Как мне изменить шрифт листа в моем gtktreeview? Я хотел бы установить шрифт жирным шрифтом для определенного листа

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Я использую python, но способ сделать это должен быть таким же, только адаптировать синтаксис.

В GTK используйте PANGO для смены шрифтов. Вот в виде дерева:

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 голосов
/ 15 сентября 2011

Вы должны установить функцию данных для столбца следующим образом:

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);
  }
}
...