Ruby 在Qt::TreeWidget中插入项

Ruby 在Qt::TreeWidget中插入项,ruby,qt,qtruby,Ruby,Qt,Qtruby,使用QtRuby(via),我试图将项目添加到QTreeWidget。它说它有一个insertTopLevelItems()方法,但它没有响应: hier = $my.appHierarchy hier.column_count = 2 hier.header_labels = ['element', 'kind'] p hier.class, hier.methods.grep(/insert/) #=> Qt::TreeWidget #=> ["insertAction", "i

使用QtRuby(via),我试图将项目添加到
QTreeWidget
。它说它有一个
insertTopLevelItems()
方法,但它没有响应:

hier = $my.appHierarchy
hier.column_count = 2
hier.header_labels = ['element', 'kind']
p hier.class, hier.methods.grep(/insert/)
#=> Qt::TreeWidget
#=> ["insertAction", "insertActions", "insertTopLevelItem", "insertTopLevelItems"]

hier.insertTopLevelItems ['x','y']
#=> in `method_missing': undefined method `insertTopLevelItems' for #<Qt::TreeWidget:0x007fc6c9153528> (NoMethodError)
hier=$my.appHierarchy
hier.column\u count=2
hier.header_标签=['element','kind']
p hier.class,hier.methods.grep(/insert/)
#=>Qt::树边
#=>[“insertAction”、“insertActions”、“insertTopLevelItem”、“insertTopLevelItems”]
hier.insertTopLevelItems['x','y']
#=>在'method_missing'中:为#未定义的方法'insertTopLevelItems'(NoMethodError)
如何将项目添加到此小部件



Ruby 2.0.0p353;Qt 4.8.6;OS X 10.9.5

您收到的
方法丢失
,因为您的参数类型错误。与Ruby不同,C++需要匹配参数和结果类型,Qtruby包装器也是如此。

调用
insertTopLevelItems
时,缺少index参数,必须从每个字符串构建
Qt::TreeWidgetItem
。如果树为空,
addTopLevelItem(…
执行与
insertTopLevelItem(0,…

下面是一些要尝试的示例代码:

(1..10).each do |n|
  item = Qt::TreeWidgetItem.new
  item.setText(0, "item #{n}/1")
  item.setText(1, "item #{n}/2")
  hier.insertTopLevelItem(0, item)
  #  hier.addTopLevelItem(item)  # same effect as previous line
end


一种解决方法是在项目创建过程中直接插入项目,如:
Qt::TreeWidgetItem.new(hier){set_text 0,“我的标签”}
itemlist = (1..10).collect do |n|
  item = Qt::TreeWidgetItem.new
  item.setText(0, "item #{n}/1")
  item.setText(1, "item #{n}/2")
  item
end
hier.insertTopLevelItems(0, itemlist)
#  hier.addTopLevelItems(itemlist)  # same effect as previous line