How can I change the font of a leaf in my gtktreeview? I'd like set the font bold for a particular leaf
问问题
2248 次
3 回答
1
我使用的是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链接:
于 2011-09-13T08:57:15.337 回答
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);
}
}
于 2011-09-15T11:59:07.503 回答
0
您可以使用Pango 标记。然后你需要的是:
- 在您的模型中使用 Pango 标记语言(此处使用
GtkListStore
):
GtkListStore *listStore = gtk_list_store_new(1, G_TYPE_STRING);
GtkTreeIter rowIter;
gtk_list_store_append(listStore, &rowIter);
gtk_list_store_set(listStore, &rowIter,
LIST_COL_NAME, "<span foreground='blue'>Blue Title</span>"\
" usual content", -1);
稍后,当您为 创建列时TreeView
,您需要指定markup
而不是text
:
#define LIST_COL_INDEX_NAME 0 // column index
// ...
GtkTreeViewColumn * col = gtk_tree_view_column_new_with_attributes (
"Column title", renderer,
"markup", // <--- This is important!
LIST_COL_INDEX_NAME, NULL);
gtk_tree_view_append_column (treeview, col);
参考
于 2020-10-25T10:42:53.070 回答