从ListBox行获得标签的更好方法

Better way to get label from ListBox row?

本文关键字:更好 方法 标签 ListBox      更新时间:2023-10-16

我正在使用GTKMM(GTK 3),我发现与Gtk::ListBox合作的教程很少。我需要能够从ListBox中的单个ListBoxrow提取标签。

现在,此代码 works 将第一行标签的文本打印到命令行,但实际上并不高效。

vector<Gtk::Widget*> listChildren = lst_agents.get_children();
vector<Gtk::Widget*> rowChildren = static_cast<Gtk::ListBoxRow*>(listChildren[0])->get_children();
std::cout << static_cast<Gtk::Label*>(rowChildren[0])->get_label() << std::endl;

有没有更好的方法来做到这一点,理想情况下,没有动态分配进入图片?我无法想象每种Gtk::ListBox排序都会遇到所有这些麻烦,因为CPU开销将是巨大的!

环境:Ubuntu 15.04,GNU GCC,Code :: Blocks,C 11

我认为没有更好的方法,不。除了您必须获取所有儿童小部件的列表以获取第一个列表以外,我没有看到它。

列表框排序将涉及实现set_sort_func()回调插槽:https://developer.gnome.org/gtkmm/stable/stable/stable/classgtk_1_1 listbox.html#acec1d555f8d73d73d591fc3ebb2772772772 cc3e4f0

,然后您已经拥有ListBoxrow:https://developer.gnome.org/gtkmm/stable/classgtk_1_1 listbox.html#a931a0b12514e0191a071900bf57c0

这样做没什么要做的。无论如何,ListBox并不是要显示大量项目 - 因为您需要一个容器小部件,将儿童小部件重复使用数据模型 - 例如,GTK :: treeview。

您在代码的第二行中也有一个错别字:您无法将ListBoxrow投射到向量。