Gtk +和Vala:继承gtk.TreeModel

Dan*_*iel 1 gtk vala

我有一个哈希值,构造成以下结构:

string type1_name -> Hash(
              string name_member -> DataStruct,
              string name_member -> DataStruct,
              string name_member -> DataStruct,
              string name_member -> DataStruct
            ),
string type2_name -> Hash(
              string name_member -> DataStruct,
              string name_member -> DataStruct,
              string name_member -> DataStruct,
              string name_member -> DataStruct
            ),
/// etc
Run Code Online (Sandbox Code Playgroud)

问题是我有3个视图:2个TreeViews(扩展的实际树以层次结构方式显示所有列,简要显示为ListStore,仅显示DataStruct的类型图标和名称,这些视图由不同的父项拥有,可能同时显示)和1 ListView与图标表示相同的数据.ATM我有一个类管理数据(验证,序列化,反序列化,...)和每个视图的3个模型,所以每次我更新/删除/创建项目我必须更新所有3个模型,这看起来不太好:(

我想到的是创建一个实现Gtk.TreeModel的类并提供可用作所有3个视图的模型的公共数据源,但是我找不到任何关于如何实现gtk.TreeModel的文档.我试图通过GtkListStore(本地C实现)查看,我看到它重新实现了很多方法.有没有更简单的方法?

nem*_*equ 5

不,没有一种更简单的方法,但实际上并不太难.查看C代码可能会令人生畏,但实际上只需要执行十几种方法.它们被标记为abstractgtk + -3.0.vapi(以及valadoc.org的Gtk.TreeModel文档).并且实现通常非常简单.如果你想要一个例子SQLHeavyGtk.Model是我唯一能想到的.

标记为的方法virtual通常不需要实现,但如果您愿意,可以提供一个(通常用于优化,我猜Gtk.ListStore提供了很多).