跳转到内容

GTK+ 示例/树形视图

来自维基教科书,开放书籍,开放世界

本章基于此作品 [1]

章节部分

[编辑 | 编辑源代码]
  1. 列表和树:GtkTreeView 小部件
  2. 组件:模型、渲染器、列、视图
  3. 用于数据存储的 GtkTreeModels:GtkListStore 和 GtkTreeStore
  4. 创建树形视图
  5. 将数据映射到屏幕:GtkTreeViewColumn 和 GtkCellRenderer
  6. 选择、双击和上下文菜单
  7. 排序
  8. 可编辑单元格
  9. 其他
  10. 拖放 (DnD) **** 需要修订 ***
  11. 编写自定义模型
  12. 编写自定义单元格渲染器
  13. 其他资源

原始许可证(树形视图)

[编辑 | 编辑源代码]

版权所有 (c) 2003-2004 Tim-Philipp Müller <tim at centricular dot net>

本教程可以以任何形式自由重新分发和修改,只要所有作者都获得他们作品的应有信誉,并且所有非琐碎的第三方更改都以文档中的方式清楚地标记,例如在修订历史中,或在文档中提到的外部和公开可访问的地方(例如 CVS/SVN/git 存储库)。

原始版本来源

[编辑 | 编辑源代码]

感谢 Axel C. 校对初稿,提供许多建议,并在最初向我介绍树形视图小部件时,让我明白它的意义所在(那时候我还坚信移植到 Gtk+-2.x 是不必要的,Gtk+-1.2 应用程序看起来很好,而且亚里士多德已经说过了关于政治的一切)。

  1. Harring Figueiredo 解释了 GtkListStore 和 GtkTreeStore 如何处理 pixbufs。
  2. Ken Rastatter 建议了一些额外的主题(甚至有完整的参考)。
  3. Andrej Prsa 和 Alan B. Canon 都向我发送了一些建议,'taf2'、Massimo Mangoni 和其他人发现了一些错别字。
  4. 非常感谢他们,当然还要感谢 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 版本的链接。
华夏公益教科书