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】:

首先,这里存在潜在的内存泄漏。你是newingTreeModelColumn,看起来永远不可能delete 它。对于一个持续 GUI 生命周期的小部件,这可能没什么大不了的。另一种选择是使用 gtkmm 的 manage 功能并让它担心内存。

其次,为了解决您的问题,我过去处理这种情况的方式是将我的 TreeModelColumn 指针收集到 std::vectorstd::map 中,以便稍后访问它们。

【讨论】:

以上是关于Gtkmm TreeView:访问动态添加的列的主要内容,如果未能解决你的问题,请参考以下文章

DELPHI TreeView,动态添加父节点,子节点

wpf中怎么为treeview动态添加子菜单

winform窗体 Treeview控件子节点动态添加图片

Gtkmm3 TreeView ListStore.Clear 或 TreeSelection.unselectAll 导致错误

WPF的TreeView通过数据库动态添加修改删除节点功能

C#动态给treeview控件添加节点和子节点