从ListBox行获得标签的更好方法
Better way to get label from ListBox row?
我正在使用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投射到向量。
相关文章:
- 初始化具有非默认构造函数的std::数组项的更好方法
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 编写按初始值循环的循环的更好方法是什么
- 用 c++ 为游戏制作"bullet"的更好方法?
- 在CMakeLists中包含目录的更好方法.txt
- 将QDomDocument数据用作文本的更好方法
- C++ - 创建具有相同字符的特定大小的以 null 结尾的 c 样式字符串的更好方法
- 在 sqlite3 中批量插入的更好方法C++
- 设计许多单例代码结构的更好方法
- 使用继承的类模板避免公共成员不可见和源代码膨胀/重复的更好方法
- 在初始化列表中初始化数组的更好方法
- 将对象从一个 std::d eque 移动到另一个的更好方法
- 请告诉我在巴泽尔拥有多平台工作空间的更好方法
- 构造具有大量数据的对象的更好方法(C++)
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 在C++中创建不可变对象的更好方法
- 在构造函数中组织初始值设定项列表的更好方法
- std::copy with return values - 防止"expression: string iterators incompatible"的更好方法?
- 删除数组成员的更好方法是什么?
- 在C 中操作数据的更好方法是什么