首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改GtkTreeView中的字体

更改GtkTreeView中的字体
EN

Stack Overflow用户
提问于 2011-09-12 02:29:07
回答 3查看 2.2K关注 0票数 1

如何在gtktreeview中更改树叶的字体?我想将特定叶子的字体设置为粗体

EN

回答 3

Stack Overflow用户

发布于 2011-09-13 16:57:15

我使用的是python,但实现方法必须是相同的,只是要适应语法。

在GTK中,使用PANGO更改字体。在树视图中:

代码语言:javascript
运行
复制
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列('Program')和第3列('Comments')具有不同的字体。第三列是粗体。

希望这能对你有所帮助。

编辑:

刚找到一个C链接:

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

票数 1
EN

Stack Overflow用户

发布于 2011-09-15 19:59:08

您必须为列设置数据函数,如下所示:

代码语言:javascript
运行
复制
gtk_tree_view_column_set_cell_data_func(column, renderer, data_func, NULL, NULL);

数据函数可能如下所示:

代码语言:javascript
运行
复制
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);
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-10-25 18:42:53

您可以使用Pango Markup。然后你需要的是:

在模型中使用Pango标记语言(此处为GtkListStore): )的

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
#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);

参考文献

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7380367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档