GTK+ 示例/树形视图
外观
< GTK+ 示例
本章基于此作品 [1]
- 列表和树:GtkTreeView 小部件
- 组件:模型、渲染器、列、视图
- 用于数据存储的 GtkTreeModels:GtkListStore 和 GtkTreeStore
- 创建树形视图
- 将数据映射到屏幕:GtkTreeViewColumn 和 GtkCellRenderer
- 选择、双击和上下文菜单
- 排序
- 可编辑单元格
- 其他
- 拖放 (DnD) **** 需要修订 ***
- 编写自定义模型
- 编写自定义单元格渲染器
- 其他资源
版权所有 (c) 2003-2004 Tim-Philipp Müller <tim at centricular dot net>
本教程可以以任何形式自由重新分发和修改,只要所有作者都获得他们作品的应有信誉,并且所有非琐碎的第三方更改都以文档中的方式清楚地标记,例如在修订历史中,或在文档中提到的外部和公开可访问的地方(例如 CVS/SVN/git 存储库)。
感谢 Axel C. 校对初稿,提供许多建议,并在最初向我介绍树形视图小部件时,让我明白它的意义所在(那时候我还坚信移植到 Gtk+-2.x 是不必要的,Gtk+-1.2 应用程序看起来很好,而且亚里士多德已经说过了关于政治的一切)。
- Harring Figueiredo 解释了 GtkListStore 和 GtkTreeStore 如何处理 pixbufs。
- Ken Rastatter 建议了一些额外的主题(甚至有完整的参考)。
- Andrej Prsa 和 Alan B. Canon 都向我发送了一些建议,'taf2'、Massimo Mangoni 和其他人发现了一些错别字。
- 非常感谢他们,当然还要感谢 kris 和 #gtk+ 中的其他人。
14.3. 修订历史
2008 年 1 月 5 日
- 更新了一些断开的链接;删除对已过时的外部单元格渲染器的引用,因为 Gtk 已添加了此类渲染器。
2005 年 6 月 5 日
- 删除 hello world 代码中不必要的 col = gtk_tree_view_column_new() (从迁移到便利函数遗留下来的)。
2005 年 2 月 3 日
- 指出使用 gtk_tree_model_get() 检索的 GObjects(如 GdkPixbufs)需要在使用后使用 g_object_unref(),因为 gtk_tree_model_get() 添加了引用。
- 向使用 gtk_tree_view_get_path_at_pos() 的代码片段添加了显式的 (gint) event->x double to int 转换,以避免编译器警告。
2004 年 9 月 9 日
- 修复了树形路径解释中的另一个错误:文本与图片不符(s/movie clips/movie trailers/);(感谢 Benjamin Brandt 发现它)。
2004 年 8 月 6 日
- 修复了树形路径解释中的错误 (s/4th/5th/) (感谢 Andrew Kirillov 和 Benjamin Brandt 发现它)。
2004 年 4 月 30 日
- 添加了 Hello World
2004 年 3 月 31 日
- 修复了自定义列表代码中的致命错别字:custom_list_init() 中的 g_assert() 应该是 ==,而不是 != (由 mmc 发现)。
- 添加了指向 Owen Taylor 关于 GtkTreeView 拖放 API 的邮件的链接。
2004 年 1 月 24 日
- 修复了代码示例中的错别字(删除第 n 行示例)(感谢 roel 发现它)。
- 更改了“上下文菜单”部分标题
2004 年 1 月 19 日
- 扩展了关于 GtkTreeRowReferences 和删除多行的部分。
2004 年 1 月 8 日
- 添加了关于 Glade 和树形视图的微型部分
- 在描述 GtkTreePath、GtkTreeIter 等的部分中添加了更多细节。
- 重新格式化了文档结构:不再是一个带有大量部分的单独章节,而是多个章节(本教程太大了,无法成为 Gtk+ 教程的一部分);对章节和部分进行编号。
- 扩展了关于树形视图列和单元格渲染器的部分,并借鉴了 Owen Taylor 的两个图表(来自 2003 年 GUADEC Gtk+ 教程幻灯片)。
2003 年 12 月 10 日
- 添加了关于如何删除单行或更具体地说,列表存储的第 n 行的更多信息
- 添加了一个关于如何将图标打包到树形视图中的简短示例。
2003 年 10 月 28 日
- 即使选择设置为 GTK_SELECTION_NONE,可编辑单元格也能正常工作。删除了说明相反内容的句子。
2003 年 10 月 23 日
- 修复自定义模型 GtkTreeSortable 接口实现中的“跳跃”选择。gtk_tree_model_rows_reordered() 似乎没有像 API 引用中暗示的那样工作(参见错误 #124790)
- 添加了关于如何获取按钮点击发生的单元格渲染器的部分
- 添加了关于使用旋转按钮的可编辑单元格的部分(以及一个 CellRendererSpin 实现到示例中)
2003 年 10 月 10 日
- 在 sortid 更改时,使自定义模型 GtkTreeSortable 实现发出“sort-column-changed”信号
- 修复了选择函数部分中的代码错别字;在“使整行变色或加粗”部分添加了关于规则提示的段落
2003 年 10 月 7 日
- 重新格式化源代码,使其在生成 ps/pdf 输出时适合页面
- 添加了指向 PDF 和 docbook XML 版本的链接。