【问题标题】:Adding a Gtk::Grid repeatedly to a Gtk::Box将 Gtk::Grid 重复添加到 Gtk::Box
【发布时间】:2012-08-04 17:48:44
【问题描述】:

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

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

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

我该怎么办?

谢谢

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

【问题讨论】:

  • 对于数据库中的一行一行的数据,列表视图不是更好的选择吗?
  • 代码在不同的文件中非常稀疏,我无法复制粘贴。

标签: c++ linux user-interface inheritance gtkmm


【解决方案1】:

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

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

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

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

【讨论】:

  • 将来,您可能会尝试在您的问题中发布一些代码。我不明白你的第一点是什么,但如果你向我们展示了你在做什么,第二点对很多人来说是显而易见的。
  • @ergosys 哦,对不起,我想我应该这样做,尽管代码太稀疏,我无法将每个父母的构造函数等放在一起。我知道 stackoverflow 是关于编程的,但我想将它与“编码”区分开来,这不是我们唯一要做的事情。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
相关资源
最近更新 更多