5

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

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

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

4

1 回答 1

6

它是如何dconf-editor做到的:GtkCellRenderer创建自定义渲染器的子类,根据需要创建一个名为renderer返回 a GtkCellRendererText,GtkCellRendererToggle等的属性,并覆盖所有GtkCellRenderer信号,如get_size, render,activate等以将它们传递给底层的renderer.

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

于 2012-07-03T05:55:44.550 回答