Gtk 如何使用Glade准备可以在运行时以编程方式创建和填充的ListBoxRow模板?
我想使用一个Gtk 如何使用Glade准备可以在运行时以编程方式创建和填充的ListBoxRow模板?,gtk,glade,Gtk,Glade,我想使用一个列表框,并向其中动态添加行。我想有几种类型的行,每种都有自己的组件和布局,在运行时,当我需要添加行时,我想使用这些行模板中的一个,从中创建一个新的ListBoxRow,在需要填充数据的地方填充数据,并将其添加到ListBox 我可以在代码中手动完成,但我想使用Glade来设计这些行。问题在于: Glade只允许我在列表框中添加ListBoxRows 这些行将是列表框的一部分,而不是我可以克隆的外部行 我没有看到用于“克隆”小部件层次结构的GTK函数,因此我无法将这些行作为实际的小部件
列表框
,并向其中动态添加行。我想有几种类型的行,每种都有自己的组件和布局,在运行时,当我需要添加行时,我想使用这些行模板中的一个,从中创建一个新的ListBoxRow
,在需要填充数据的地方填充数据,并将其添加到ListBox
我可以在代码中手动完成,但我想使用Glade来设计这些行。问题在于:
列表框中添加ListBoxRow
s
列表框的一部分,而不是我可以克隆的外部行
TreeView
并为其设置模型,但我需要一个ListBox
,因为我需要自由定制的行
我考虑将行节点提取到单独的XML中,每次都使用一个新的构建器从新的XML中重新创建一个新行并填充数据。这是可行的,但感觉很粗糙,不能太过表现——必须有更好的方法
有没有一个官方的方法可以做到这一点?你的问题实际上是多方面的,所以这里是
列表框
,可以将列表框行
置于列表框
之外。通过这种方式,您可以使用如下方法将行(稍后显示)添加到列表框中:
listbox=self.builder.get\u对象(“listbox”)
行=self.builder.get\u对象(“行”)
listbox.insert(第0行)
ListBoxRow
s恰好是静态的,您可能需要考虑在代码中生成它们。对于在Glade文件中定期更新的小部件来说,这将不起作用