文章目录
- 前言
- 源代码
前言
- gtkmm4.10已经没有控件的 get_children() 方法了
- 但引进了observe_children() 但服务器托管网这个如其名字一样, 不能对子控件作修改
可以用它返回的对象.get_n_items() 获取子控件的数量 - 还有如下的代替
get_first_child() : 如果只有一个child 则first与last返回同一个
get_last_child()
get_next_sibling() : 如果没有将返回 NULL
get_prev_sibling()
get_child()
get_parent() - 通过以上这些, 可以完成遍历
源代码
-
void RetrieveChildren(Gtk::Widget* container) { auto curr_child = container->get_first_child(); while (curr_child) { std::cout curr_child->get_name() std::endl; RetrieveChildren(curr_child) ; curr_child = curr_child->get_next_sibling(); } };
- 美化一下输出结果
void ArrangeHolder(string& Holder) { // 输入的字符串,其中可能包含散落的 '|' 字符 // 第一步:将所有 '|' 替换为临时字符 '-' std::regex replaceAllPattern(R"(|)"); std::string temp = std::regex_replace(Holder, replaceAllPattern, "-"); // 第二步:只将第一个和最后一个 '-' 替换回 '|' temp.replace(0, 1, 1, '|'); temp.replace(temp.size() - 4, 1, 1, '|'); Holder = temp; } void RetrieveChildren(Gtk::Widget* container) { static string Holder; auto first_child = container->get_first_child(); auto curr_child = first_child; if (first_child) { Holder += "|-- "; while (curr_child) { ArrangeHolder(Holder); std::cout Holder curr_child-&服务器托管网gt;get_name() std::endl; RetrieveChildren(curr_child) ; curr_child = curr_child->get_next_sibling(); if (!curr_child) { Holder.erase(Holder.size() - 4); std::cout Holder std::endl; } } } };
这样输出关系就可观一点:
|-- gtkmm__GtkBox |-- |-- gtkmm__GtkLabel |-- |-- gtkmm__GtkBox |-- |-- gtkmm__GtkLabel |-- |-- gtkmm__GtkButton |-- --- |-- gtkmm__GtkLabel |-- --- |-- |-- gtkmm__GtkBox |-- |-- gtkmm__GtkLabel |-- |-- gtkmm__GtkBox
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
谷歌DeepMind的研究人员推出了一款,通过视觉语言模型进行场景理解,并使用大语言模型来发出指令控制实体机器人的模型——AutoRT AutoRT可有效地推理自主权和安全性,并扩大实体机器人学习的数据收集规模。在实验中,AutoRT指导超过20个实体机器人执…