在Gtk中,每个树视图行可以有一个单元格渲染器吗?

时间:2012-07-02 16:02:06

标签: c gtk

在Gtk +中,每列可能有几个单元格渲染器,但是我想在不同的行中使用不同的单元格渲染器。例如,我想在树视图中列出对象的属性。对于布尔属性,切换按钮比编辑GtkCellRendererText并输入TRUEFALSE要简单得多。

我知道我可以通过gtk_tree_view_column_set_cell_data_func()设置回调来对行数据做出反应。但在回调中,单元格渲染器已经修复,我只能改变其外观。

编辑: ptomato指出如何在Vala中完成。我获取了这些信息并构建了一个基于C的单元格渲染器,它使用GObject和一个列表存储(假设第一列包含属性名称)来显示一个自定义单元格,具体取决于属性的类型。我还将一个树视图小部件子类化,结合使用这个小部件以便于使用。这两个组件都可以在Github找到。

1 个答案:

答案 0 :(得分:3)

以下是how dconf-editor does it:子类GtkCellRenderer来制作自定义渲染器,创建一个名为renderer的属性,该属性返回GtkCellRendererTextGtkCellRendererToggle等等,具体取决于我们需要什么,并覆盖所有GtkCellRenderer信号,例如get_sizerenderactivate等,以将它们传递给基础renderer。< / p>

它在Vala中完成,但转换为C不应该太难。