2012-07-02 31 views
2

在Gtk +中,每列可以有多個單元格渲染器,但是我想在不同的行中使用不同的單元格渲染器。例如,我想列出樹形視圖中對象的屬性。對於布爾屬性,切換按鈕比編輯GtkCellRendererText和輸入TRUEFALSE要簡單得多。在Gtk中,每個treeview行可以有一個單元格渲染器嗎?

我知道我可以通過設置回調通過gtk_tree_view_column_set_cell_data_func()對行數據作出反應。但在回調中,單元格渲染器已經修復,我只能改變其外觀。

編輯: ptomato指出它如何在Vala中完成。我接收了這些信息並構建了一個基於C的單元格渲染器,它根據屬性的類型採用GObject和列表存儲(假定第一列包含屬性名稱)以顯示自定義單元格。我還劃分了一個樹視圖窗口小部件,將其組合在一起以便於使用。這兩個組件都可以在Github找到。

回答

3

這裏的how dconf-editor does it:子類GtkCellRenderer做一個自定義渲染,創建一個名爲renderer屬性,返回GtkCellRendererTextGtkCellRendererToggle等,這取決於需要什麼,並覆蓋所有的GtkCellRenderer信號如get_sizerenderactivate等。將它們傳遞給底層的renderer

它在瓦拉做,但它不應該太難轉換爲C.

+0

我不太流利的瓦拉,所以我可能是錯的什麼我砍死在一起[這裏](https://開頭github.com/matze/EggPropertyTreeView)。它顯示正確的文本和切換渲染器,但不能旋轉。此外,我無法以任何方式與單元格交互,儘管我將它們的屬性設置爲「可編輯」和「可激活」。出於某種原因,不會調用'xxx_start_editing()'和'xxx_activate()'這似乎是問題所在。 – matthias

+0

好的,現在我明白了。我需要更新子渲染器的模式_和_子類閃存渲染器。 – matthias

+0

很高興你得到它! – ptomato

相關問題