Gtk.TreeView 无法添加自定义渲染器,断言“gtk_cell_area_has_renderer(区域,渲染器)”失败

Nam*_*arl 2 gtk treeview gtktreeview

我试图通过调用set_attributes将动态自定义 CellRenderer 添加到我的Gtk.Treeview中:

    private void add_column (TrackColumns type) {
        var column = new Gtk.TreeViewColumn () ;
        column.title = type.get_title () ;
        var renderer = type.get_cell_renderer () ;
        column.set_attributes (renderer, "text", type) ;

        view.insert_column (column, -1);
    } 
Run Code Online (Sandbox Code Playgroud)

不幸的是,它失败并出现错误

assertion 'gtk_cell_area_has_renderer (area, renderer)' failed
Run Code Online (Sandbox Code Playgroud)

Nam*_*arl 5

您必须Gtk.TreeViewColumn.pack_start在分配渲染器之前调用。

这是工作代码:

    private void add_column (TrackColumns type) {
        var column = new Gtk.TreeViewColumn () ;
        column.title = type.get_title () ;
        var renderer = type.get_cell_renderer () ;
        column.pack_start (renderer, true);
        column.set_attributes (renderer, "text", type) ;

        view.insert_column (column, -1);
    }
Run Code Online (Sandbox Code Playgroud)