gpt4 book ai didi

gtk3 - 瓦拉。你如何删除一个 GTK 容器的所有 child ?

转载 作者:行者123 更新时间:2023-12-05 00:19:22 25 4
gpt4 key购买 nike

解决了。例子见回复。

我有一个带 child 的容器。我需要删除所有的 child 。这在 C 中很容易。Vala 不起作用。

以下代码产生一个错误,缺少集合的类型参数。

var a_box = new Box (Orientation.VERTICAL, 0);
// Add some children
List children = a_box.get_children();
foreach (Widget element in children) { }

我测试了此代码的二十多种变体以及许多数据类型。当我没有收到丢失类型的投诉时,我最终会得到一个不能用作小部件的数据类型,这意味着我无法销毁它。

使用 Vala,而不是 C 或 Python 或任何容易做到这一点的多种语言中的任何一种,您如何删除容器的所有子项?

从我所见,获取子项的唯一方法是作为列表,但在 Vala 中,列表条目不能用于删除或销毁小部件。

在 C 中删除和销毁工作。我有几个基于 C 的应用程序同时执行。 Vala 0.30 编译器拒绝从 C 到 Vala 的所有翻译,并拒绝编译来自 Valadocs 等的示例。

最佳答案

要纠正有关缺少类型参数的错误,只需提供类型参数。 Gtk.Container.get_children()的签名说类型是 List<weak Widget> ,所以让我们使用它:

GLib.List<weak Gtk.Widget> children = container.get_children ();
foreach (Gtk.Widget element in children)
container.remove (element);

当然,你也可以只使用类型推断:
var children = container.get_children ();
foreach (Gtk.Widget element in children)
container.remove (element);

或者甚至完全避免使用临时变量:
foreach (Gtk.Widget element in container.get_children ())
container.remove (element);

但我能想到的最简单的方法是:
container.foreach ((element) => container.remove (element));

关于gtk3 - 瓦拉。你如何删除一个 GTK 容器的所有 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com