我正在尝试在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
类来规避:
答案 0 :(得分:0)
我怀疑get_size将width
和height
委托给对象属性,而父窗口小部件直接使用属性而不是命中get_size
方法。 get_size
不是信号,这就是为什么signal_do_get_size
也不会被调用的原因。
尝试:
set_property("width", 100)