首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从另一个函数错误(C++,Gtkmm)向网格添加Gtk::Box

从另一个函数错误(C++,Gtkmm)向网格添加Gtk::Box
EN

Stack Overflow用户
提问于 2020-07-13 18:16:50
回答 1查看 44关注 0票数 0

当我尝试在点击按钮后从另一个函数添加Gtk::box到一个网格中时,我得到了错误:

代码语言:javascript
运行
复制
gtk_grid_attach_next_to: assertion '_gtk_widget_get_parent (child) == NULL' failed

但是,如果我将代码从add函数( card_add )复制到main函数(kanban_init),它将不会出现问题地添加到网格中,但我需要在按下按钮时向网格中添加一个新的框,这将调用card_add函数将框添加到网格中。

在头文件(tabs.h)中:

代码语言:javascript
运行
复制
Gtk::Grid kanbanGrid;
Gtk::Box todoBox, progressBox, doneBox, backlogBox;

Gtk::Box newCard;
Gtk::Label cardTitle, cardDesc

在主函数(tabs::kanban_init)中:

代码语言:javascript
运行
复制
tAdd.signal_clicked().connect(sigc::mem_fun(*this, &tabs::card_add));

kanbanGrid.attach(todoBox, 1, 1);
kanbanGrid.attach(progressBox, 2, 1);
kanbanGrid.attach(doneBox, 3, 1);
kanbanGrid.attach(backlogBox, 4, 1);

在add new框函数(tabs::card_add)中:

代码语言:javascript
运行
复制
newCard.set_size_request(300, 30);
newCard.pack_start(cardTitle, Gtk::PACK_SHRINK);
newCard.pack_start(cardDesc, Gtk::PACK_SHRINK);

cardTitle.set_label("title");
cardDesc.set_label("description");

kanbanGrid.attach_next_to(newCard, todoBox, Gtk::POS_BOTTOM);
EN

回答 1

Stack Overflow用户

发布于 2020-07-15 03:22:32

我不是百分之百确定。下面是我的假设:

  • _gtk_widget_get_parent (child) == NULL看起来像是一个小部件已经有了父级(所以应该已经分配了attached).
  • newCard (Gtk::Manage),否则第二次调用回调时,kanbanGrid将附加到同一个小部件上。另一种解决方案是,如果您已经附加了回调,则添加逻辑以立即离开回调。但这并不能解释为什么第一次触发此错误。
  • 而不是attach_next_to()您是否尝试过add() ?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62873743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档