繁体   English   中英

从另一个 function 错误(C++,Gtkmm)将 Gtk::Box 添加到网格

[英]Adding a Gtk::Box to a grid from another function error (C++, Gtkmm)

当我尝试在单击按钮时将 Gtk::box 从另一个 function 添加到网格中时,出现错误:

gtk_grid_attach_next_to: assertion '_gtk_widget_get_parent (child) == NULL' failed

但是,如果我将代码从添加函数(card_add)复制到主 function(kanban_init)它将毫无问题地添加到网格中,但我需要在按下按钮时向网格添加一个新框,它调用 card_add function 到将框添加到网格中。

在 header 文件 (tabs.h) 中:

Gtk::Grid kanbanGrid;
Gtk::Box todoBox, progressBox, doneBox, backlogBox;

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

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

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);

在添加新框中 function (tabs::card_add):

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);

我不是百分百确定。 这是我的假设:

  • _gtk_widget_get_parent (child) == NULL看起来像一个小部件已经有一个父级(所以已经附加)。
  • newCard 应该被分配(Gtk::Manage),否则第二次调用回调时 kanbanGrid 将附加到同一个小部件。 如果您已经附加了另一个解决方案,请添加逻辑以立即离开回调。 但这并不能解释为什么第一次触发此错误。
  • 您是否尝试过 add() 而不是 attach_next_to()?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM