如何使用 Glade 准备可以在运行时以编程方式创建和填充的 ListBoxRow 模板?
How to use Glade to prepare ListBoxRow templates that can be created and filled programatically at runtime?
我想使用 ListBox
并向其中动态添加行。我想要几种类型的行,每种类型都有自己的组件和布局,并且在运行时,当我需要添加一行时,我想采用这些行模板之一,从中创建一个新的 ListBoxRow
,在需要填写数据的地方填写数据,添加到ListBox
.
我可以在代码中手动完成,但我想使用 Glade 来设计这些行。问题是:
- Glade 只允许我在
ListBox
. 中添加 ListBoxRow
s
- 这些行将成为
ListBox
的一部分,而不是我可以克隆的外部行。
- 我没有看到 "cloning" 小部件层次结构的 GTK 函数,因此我无法将这些行作为实际小部件然后克隆它们。
谷歌搜索答案让我找到 things like this,它专注于 TreeView
并为其设置模型,但我需要一个 ListBox
,因为我需要可自由定制的行。
我考虑过将行节点提取到单独的 XML 中,并且每次都使用一个新的构建器从那个新的 XML 中重新创建一个新行并填充数据。这行得通,但感觉很笨拙,而且性能不太好 - 必须有更好的方法!
有官方的方法吗?
你的问题其实是多方面的,所以就这样吧。
可以在 Listbox
之外添加一个 ListBoxRow
,方法是添加一行,然后将其拖放到 ListBox
之外。通过这种方式,您可以使用类似以下内容将行(稍后显示)添加到 Listbox
:
listbox = self.builder.get_object("listbox")
row = self.builder.get_object("row")
listbox.insert(row, 0)
2.It 无法克隆或复制 Glade 小部件。有关详细信息,请参阅此 post。
3.You 可能想考虑在代码中生成您的小部件和 ListBoxRow
,如果它们恰好是相当静态的。这不适用于定期在 Glade 文件中更新的小部件。
我想使用 ListBox
并向其中动态添加行。我想要几种类型的行,每种类型都有自己的组件和布局,并且在运行时,当我需要添加一行时,我想采用这些行模板之一,从中创建一个新的 ListBoxRow
,在需要填写数据的地方填写数据,添加到ListBox
.
我可以在代码中手动完成,但我想使用 Glade 来设计这些行。问题是:
- Glade 只允许我在
ListBox
. 中添加 - 这些行将成为
ListBox
的一部分,而不是我可以克隆的外部行。 - 我没有看到 "cloning" 小部件层次结构的 GTK 函数,因此我无法将这些行作为实际小部件然后克隆它们。
ListBoxRow
s
谷歌搜索答案让我找到 things like this,它专注于 TreeView
并为其设置模型,但我需要一个 ListBox
,因为我需要可自由定制的行。
我考虑过将行节点提取到单独的 XML 中,并且每次都使用一个新的构建器从那个新的 XML 中重新创建一个新行并填充数据。这行得通,但感觉很笨拙,而且性能不太好 - 必须有更好的方法!
有官方的方法吗?
你的问题其实是多方面的,所以就这样吧。
可以在
Listbox
之外添加一个ListBoxRow
,方法是添加一行,然后将其拖放到ListBox
之外。通过这种方式,您可以使用类似以下内容将行(稍后显示)添加到Listbox
:listbox = self.builder.get_object("listbox") row = self.builder.get_object("row") listbox.insert(row, 0)
2.It 无法克隆或复制 Glade 小部件。有关详细信息,请参阅此 post。
3.You 可能想考虑在代码中生成您的小部件和 ListBoxRow
,如果它们恰好是相当静态的。这不适用于定期在 Glade 文件中更新的小部件。