0

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

虽然每次pack_end()调用我都会得到:

gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed在我的终端中,没有任何东西被添加到框中。

我应该怎么办?

谢谢

*编辑:目标:我希望将数据库表的条目放入每个记录的精美小部件中,尽管所有记录一个接一个地垂直显示。我想我可以在 Glade 中将精美的小部件创建为窗口,并使用 Gtk::Builder 获取指向它的指针。所以在幻想的 Glade 文件中,我有一个窗口,其中包含一个具有我自定义外观的网格。当我尝试 , 时add出现pointer to the fancy *grid*上述to错误visible window's Box。我希望我很清楚。

4

1 回答 1

0

这是解决方案gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed

首先需要做的就是你应该在没有窗口的情况下绘制小部件,因此当加载构建器时,它不会有父级,因此断言成功。

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

性能必须有很大差异,以防记录数量很大,但是 Gtk::Widget 的复制构造函数是私有的,直接复制是不可能的,因为这不是我的主要痴迷,所以我没有坚持关于解决这个“性能”问题。

于 2012-08-09T07:33:25.177 回答