gpt4 book ai didi

Gtk+ 和 Vala : Inheriting gtk. TreeModel

转载 作者:行者123 更新时间:2023-12-01 14:23:56 24 4
gpt4 key购买 nike

我有一个散列,其值构建到以下结构中:

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

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

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

最佳答案

不,没有更简单的方法,但实际上并不太难。查看 C 代码可能会让人望而生畏,但实际上您需要实现的方法只有十几个。它们在 gtk+-3.0.vapi(和 valadoc.org 的 Gtk.TreeModel 文档)中被标记为 abstract,并且实现通常非常简单。如果你想要一个例子 SQLHeavyGtk.Model这是我唯一能想到的。

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

关于Gtk+ 和 Vala : Inheriting gtk. TreeModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11921728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com