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

mat*_*ias 3 c gtk

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

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

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

pto*_*ato 5

下面是如何dconf-editor做它:子类GtkCellRenderer来创建自定义渲染器,创建一个名为属性renderer,它返回一个GtkCellRendererTextGtkCellRendererToggle等,这取决于需要什么,并覆盖所有的GtkCellRenderer信号,如get_sizerenderactivate,等他们一起传递到底层renderer

它在Vala中完成,但转换为C并不难。