在Gtk +中,每列可能有几个单元格渲染器,但是我想在不同的行中使用不同的单元格渲染器。例如,我想在树视图中列出对象的属性。对于布尔属性,切换按钮比编辑GtkCellRendererText
并输入TRUE
或FALSE
要简单得多。
我知道我可以通过gtk_tree_view_column_set_cell_data_func()
设置回调来对行数据做出反应。但在回调中,单元格渲染器已经修复,我只能改变其外观。
编辑: ptomato指出如何在Vala中完成。我获取了这些信息并构建了一个基于C的单元格渲染器,它使用GObject和一个列表存储(假设第一列包含属性名称)来显示一个自定义单元格,具体取决于属性的类型。我还将一个树视图小部件子类化,结合使用这个小部件以便于使用。这两个组件都可以在Github找到。
答案 0 :(得分:3)
以下是how dconf-editor
does it:子类GtkCellRenderer
来制作自定义渲染器,创建一个名为renderer
的属性,该属性返回GtkCellRendererText
,GtkCellRendererToggle
等等,具体取决于我们需要什么,并覆盖所有GtkCellRenderer
信号,例如get_size
,render
,activate
等,以将它们传递给基础renderer
。< / p>
它在Vala中完成,但转换为C不应该太难。