如何访问存储在 Gtk::Box / Gtk::Grid 中的 [i] 处的小部件?
Posted
技术标签:
【中文标题】如何访问存储在 Gtk::Box / Gtk::Grid 中的 [i] 处的小部件?【英文标题】:How can I access on a widget at [i], stored in a Gtk::Box / Gtk::Grid? 【发布时间】:2021-06-04 16:33:00 【问题描述】:我有一个 Gtk::Boxes 的 std::vector,用于存储小部件。现在,我想在 [i] 处访问 Box 中的某个小部件。
for(auto& it : layouts)
for(int i = 0; i < it->size(); ++i)
if(it->itemAt(i)->widget())
it->itemAt(i)->widget()->setVisible((std::string(it->get_name())== StringID));
布局:std::vector 持有 Gtk::Boxes。 itemAt 是一个伪方法,(QT 方法)在 (i) 处访问 Gtk::Box。
【问题讨论】:
【参考方案1】:Gtk::Box
不是正确的抽象。小部件上的每个操作都与容器中存在的其他小部件相关。如果您想控制容器中特定位置的孩子,我建议从Gtk::Box
移动到Gtk::Grid
,它有特殊的方法可以满足您的需要。例如,您可以使用:
Widget* Gtk::Grid::get_child_at(int left,
int top
)
更多信息请参见the reference。
【讨论】:
以上是关于如何访问存储在 Gtk::Box / Gtk::Grid 中的 [i] 处的小部件?的主要内容,如果未能解决你的问题,请参考以下文章
当 Gtk.Box 在任何地方单击时如何打开网页,尽管其中有 Gtk.LinkButton 链接?
gtkmm 3.10.1 中带有 CSS 的 Gtk::Box 样式问题