我想實現的Ruby/GTK定製的CellRenderer,我已經發現了這個建議定義CellRenderer:GObject的子類中的Ruby在GtkTreeView
但是,當我嘗試以下方法:
class CellRendererCustom < Gtk::CellRendererText
type_register #register within gobject system?
def initialize
super
end
def get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
def signal_do_get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
def signal_do_on_get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
def on_get_size(widget, cell_area)
puts "Never called :-("
return 0,0,100,100
end
end
這些信號永遠不會被調用。我想這跟Ruby如何連接到GObject API有關,但老實說,我不知道這是如何工作的。
我想要做的是子類CellRendererText,並覆蓋了一個方法,在本例中get_size被TreeView調用。但是,我認爲因爲CellRendererText是一個C模塊,而不是一個ruby類,所以我不能覆蓋它的方法,而實際上並沒有讓系統意識到這一點。
另外我是CellRenderers需要分配給TreeViewColumn,然後調用get_size和其他方法。
據我所知,在PyGTK的,它在某種程度上通過增加GenericCellRenderer
類規避存在類似的問題:
http://faq.pygtk.org/index.py?req=show&file=faq13.045.htp
我加了一些澄清上述問題,其實我是想覆蓋get_size方法在我的子類。 – genericus666
我得到了你想要做的,我的觀點站立。 我認爲get_signal沒有被調用,既不是你的實現也不是在任何父類中的實現。 因此,我建議設置寬度和高度屬性。 – Tobu