我正在尝试在 Ruby/GTK 中实现一个定制的 CellRenderer,我已经找到了这个建议:
但是,当我尝试以下操作时:
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
类以某种方式规避了它: