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 版本的連結。