【发布时间】:2014-07-25 08:19:48
【问题描述】:
所以我有一个列表框:
var listbox = new Gtk.ListBox();
var l = new Watcher.ListItem.NewItem("title","subtitle", "etc");
listbox.insert(l, 0);
“l”基本上是一个带有格式化标签和东西的Gtk.ListBoxRow。
我添加了一个带有“新建”标签的按钮,其目的是将新项目添加到列表框中。
int i = 1;
back_new.clicked.connect( ()=>{
l = new Watcher.ListItem.NewItem("title2", "subtitle2", "etc2");
listbox.insert(l, i);
i++;
});
问题是,如果我检查“listbox.get_row_at_index(2)”,它表明列表框中有一些东西,所以会发生一些事情,但 gui 中的列表框没有更新。
如果需要,这里有完整的代码: http://pastebin.com/u/Levike
【问题讨论】:
-
请包含创建 ListBoxRow 和其中的小部件的代码。我的猜测仍然是其中一些是不可见的(不幸的是,GTK+ 默认对所有新小部件都不可见)。
-
插入第一个元素(索引:0)是可以的。因此,如果我运行程序,我可以看到一个元素,但是当我单击“back_new”按钮时,它不会添加第二个元素。(我的意思是它不会出现)。我什至尝试创建一个只有一个标签的简单 listboxrow 元素。没有运气
-
但这里是完整的代码:pastebin.com/u/Levike Listitem.vala 是你要求的@jku
-
我没有看到我提到的代码。在任何情况下,问题都应该是独立的:请考虑在问题中添加small and self-contained 示例:您获得有用答案的机会将大大提高。
-
“不幸的是,GTK+ 默认对所有新小部件都不可见”。你能告诉我如何改变它以显示它们吗?抱歉,您看到了我以前的问题,而我对 vala 或列表框一无所知的朋友在没有我解释的情况下知道我的问题是什么。我不想发火或任何事情,感谢您的时间,但我不能更容易地问这个问题。阅读@luciomrx 的答案可能我有一个错误。它应该更新 gui,但由于某种原因它没有