Ruby 在ListStore的每一行中放置一个GTK::按钮

Ruby 在ListStore的每一行中放置一个GTK::按钮,ruby,gtk,gtk2,Ruby,Gtk,Gtk2,Hy, 我已经建立了一个工具,它显示了一个数据库的内容,工作正常,但用户必须在点击行中的按钮时删除行 这就是我现在用来设置ListStore的工具 def setup_tree_view(treeview) renderer = Gtk::CellRendererText.new renderer.foreground = "#ff0000" column = Gtk::TreeViewColumn.new("Bestellnummer", renderer, :text =>

Hy, 我已经建立了一个工具,它显示了一个数据库的内容,工作正常,但用户必须在点击行中的按钮时删除行

这就是我现在用来设置ListStore的工具

def setup_tree_view(treeview)
 renderer = Gtk::CellRendererText.new
 renderer.foreground = "#ff0000"
 column   = Gtk::TreeViewColumn.new("Bestellnummer", renderer, :text => ID)
 treeview.append_column(column)
 renderer = Gtk::CellRendererText.new
 column   = Gtk::TreeViewColumn.new("Produkt", renderer,  :text => PRODUCT)
 treeview.append_column(column)
 renderer = Gtk::CellRendererText.new
 column   = Gtk::TreeViewColumn.new("Kunde", renderer, :text => CUSTOMER)
 treeview.append_column(column)
 renderer = Gtk::CellRendererText.new
 renderer = Gtk::CellRendererText.new
 column   = Gtk::TreeViewColumn.new("Kontakt", renderer, :text => CONTACT)
 treeview.append_column(column)
 renderer = Gtk::CellRendererToggle.new
 renderer.set_activatable true
 renderer.signal_connect('toggled') do |renderer, path|
   @handler.updateData ((@store.get_iter path).get_value ID), "ordered", toInt( (!((@store.get_iter path).get_value ORDERED)))
   @store.clear
   showData @handler.start
 end

 column   = Gtk::TreeViewColumn.new("Bestellt", renderer, :active => ORDERED)
 treeview.append_column(column)
 renderer = Gtk::CellRendererToggle.new
 renderer.signal_connect('toggled') do |renderer, path|
   @handler.updateData ((@store.get_iter path).get_value ID), "arrived", toInt( (!((@store.get_iter path).get_value ARRIVED)))
   @store.clear
   showData @handler.start
 end
 column   = Gtk::TreeViewColumn.new("Angekommen", renderer, :active => ARRIVED)
 treeview.append_column(column)
 renderer = Gtk::CellRendererToggle.new
 renderer.signal_connect('toggled') do |renderer, path|
   @handler.updateData ((@store.get_iter path).get_value ID), "informed", toInt( (!((@store.get_iter path).get_value ORDERED)))
   @store.clear
   showData @handler.start
 end
 column   = Gtk::TreeViewColumn.new("Informiert", renderer, :active => INFORMED)
 treeview.append_column(column)
end
现在我想添加一个新列,其中有打开“删除”对话框的按钮,但我找不到允许我在其中添加按钮的单元格渲染器


我如何才能做到这一点?

您是对的,没有像GTK按钮那样工作的单元渲染器,因此唯一的方法是编写您自己的单元渲染器对象

是编写自己的渲染器的指南,虽然它是为C编写的,但原则是一样的