将GtkTreeView样式更改为类似Windows的样式

将GtkTreeView样式更改为类似Windows的样式,gtk,Gtk,如何使GtkTreeView看起来像上图中的一样?请注意树辅助线(虚线)和文件夹扩展器图标。树辅助线由启用树辅助线属性控制。渲染图标有点复杂 首先,您必须为模型添加一个额外的字段,该字段具有图标名称。接下来,您必须连接到“行折叠”和“行扩展”信号,并手动更改模型中的图标名称 然后制作一个TreeViewColumn,并在那里用gtk\u tree\u view\u column\u pack\u start打包两个渲染器 column = gtk_tree_view_column_new ();


如何使GtkTreeView看起来像上图中的一样?请注意树辅助线(虚线)和文件夹扩展器图标。

树辅助线由
启用树辅助线
属性控制。渲染图标有点复杂

首先,您必须为模型添加一个额外的字段,该字段具有图标名称。接下来,您必须连接到
“行折叠”
“行扩展”
信号,并手动更改模型中的图标名称

然后制作一个TreeViewColumn,并在那里用
gtk\u tree\u view\u column\u pack\u start
打包两个渲染器

column = gtk_tree_view_column_new ();
gtk_tree_view_column_set_title (column, "title");

renderer0 = gtk_cell_renderer_pixbuf_new ();
g_object_set (renderer0, "icon-name", "folder-open", NULL); // #1
gtk_tree_view_column_pack_start (column, renderer0, FALSE);
gtk_tree_view_column_set_visible (column, TRUE);

renderer1 = gtk_cell_renderer_text_new ();
gtk_tree_view_column_pack_start (column, renderer1, FALSE);
gtk_tree_view_column_set_attributes (column, renderer1, // #2
                                     "text", NAME_COL,
                                     NULL); 
此代码段对所有行使用一个图标(图标名称是全局设置的),但您可以使其从模型中获取图标名称

如果库存图标不够,您将不得不使用GIcon或pixbuf,请查看CellRenderPIXBUF的
“GIcon”
“pixbuf”
属性


编辑:如果问题是关于+/-按钮而不是三角形,请查看或调整gtk3主题