将 Gtk::Grid 重复添加到 Gtk::Box
Adding a Gtk::Grid repeatedly to a Gtk::Box
我有一个只包含一个网格的 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文件中,我有一个窗口,其中包含一个具有我的自定义外观的网格。当我尝试add
pointer to the fancy *grid*
时,我收到上述错误,to
visible window's Box
。我希望我清楚。
这是gtk_box_pack: assertion 'gtk_widget_get_parent (child) == NULL' failed
的解决方案:
首先需要做的是,您应该在没有窗口的情况下绘制小部件,因此当加载构建器时,它将没有父级,因此断言成功。
虽然这里有另一点:当我将网格的第一个实例添加到 Box 时,第二个实例再次导致相同的错误。经过几次尝试和错误,我意识到在每次交互中,您应该使用 Gtk::Builder::create_from_file()
创建一个新的无父网格实例以便能够使用,并且通过这种方式工作。
如果记录数量很大,性能必须有很大的差异,但是 Gtk::Widget 的复制构造函数是私有的,直接复制是不可能的,而且由于这不是我的主要痴迷,我没有坚持解决这个"性能"问题。
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何在运行中期切换GTK CSS style_context
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何使用 GTK 将图像添加到按钮
- 将 Gtk::Entry 添加到 Gtk::D ialog
- 将 Gtk::Grid 重复添加到 Gtk::Box
- 如何在运行时从 Glade 定义添加 Gtk::笔记本选项卡
- 将OpenGL窗口添加到GTK生成器中
- 在函数调用时向主窗口添加GTK子部件
- Gtk Notebook小部件添加新选项卡错误
- 向Gtk::AboutDialog类添加自定义Authors类别
- 我如何使用GTK+在NetBeans中添加Image.png到我的项目
- 如何在Gtkmm c++中添加另一个Gtk::Box