2012-08-07 30 views
0

我有一个只包含网格的Window对象。我想使用Gtk :: Builder来获取指向网格的指针,然后使用一些Gtk :: Box的Gtk::Box->pack_end()多次添加网格(每次都有操纵的内容)。将Gtk :: Grid重复添加到Gtk :: Box

虽然每一次pack_end()叫我得到:

gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed在我的终端和没有被添加到框。

我该怎么办?

感谢

*编辑: 目标: 我想一个数据库表的条目被放入每个记录的花式小部件,但在垂直方向上显示一前一后的所有记录。我认为我可以在Glade中创建一个窗口小部件,并使用Gtk :: Builder来获取它的指针。所以在花哨的格莱德文件中,我有一个窗口包含了一个具有我自定义外观的网格。当我尝试add,pointer to the fancy *grid*,to,visible window's Box时,我得到上述错误。我希望我很清楚。

+0

唉,有人吗? – Haix64 2012-08-07 17:12:33

+1

某些代码会很有用。 – ergosys 2012-08-08 02:30:46

+0

列表视图不是一个更好的选择,从数据库的行数据行? – senshikaze 2012-08-08 20:04:35

回答

0

这里的解决gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed

所有需要放在第一位做的是,你应该绘制控件没有窗户,所以当建设者加载,它不会有一个家长,因此断言成功。

虽然这里还有一点:当我将第一个网格实例添加到Box时,第二个会再次导致相同的错误。经过几次试验和错误之后,我意识到,在每一次交互中,您都应该使用Gtk::Builder::create_from_file()来创建一个可以使用的新的无父级网格实例,并且这种方式可以工作。

如果记录的数量很大,但是Gtk :: Widget的拷贝构造函数是私有的,并且不可能直接拷贝,并且因为它不是我主要的痴迷,所以在性能上必须有很大的差异并没有坚持要解决这个“表现”问题。

+3

将来,您可能会尝试在您的问题中发布一些代码。我不明白你的第一点是什么,但是如果你告诉我们你在做什么,第二点就显而易见了。 – ergosys 2012-08-13 00:45:00

+0

@ergosys哦,我很抱歉,我想我应该这样做,尽管代码对于我来说每个父母的构造函数都是很稀疏的。我理解stackoverflow是关于编程,但我想区分它与“编码”,这不是我们所做的唯一事情。谢谢。 – Haix64 2012-08-13 06:47:26