Gtkmm TreeView:访问动态添加的列
Posted
技术标签:
【中文标题】Gtkmm TreeView:访问动态添加的列【英文标题】:Gtkmm TreeView: Accessing dynamically added columns 【发布时间】:2013-03-19 00:02:51 【问题描述】:我目前正在这样做以将 numCols
列添加到 TreeView (ColumnRecord columns
):
Gtk::TreeModelColumn<Glib::ustring>* c;
for( int i = 0; i < numCols; i++ )
c = new Gtk::TreeModelColumn<Glib::ustring>();
columns.add(*c);
list.append_column(titles[i], *c);
iss.clear();
要获取具有预设 ColumnRecord 的特定行和列的元素,我会执行类似 Gtk::TreeModel::Row row; row[columns.c1] = blah
的操作。但是,既然这些列没有命名,我将如何访问它们?
【问题讨论】:
【参考方案1】:首先,这里存在潜在的内存泄漏。你是newing
和TreeModelColumn
,看起来永远不可能delete
它。对于一个持续 GUI 生命周期的小部件,这可能没什么大不了的。另一种选择是使用 gtkmm 的 manage 功能并让它担心内存。
其次,为了解决您的问题,我过去处理这种情况的方式是将我的 TreeModelColumn
指针收集到 std::vector
或 std::map
中,以便稍后访问它们。
【讨论】:
以上是关于Gtkmm TreeView:访问动态添加的列的主要内容,如果未能解决你的问题,请参考以下文章
Gtkmm3 TreeView ListStore.Clear 或 TreeSelection.unselectAll 导致错误