gpt4 book ai didi

c++ - 从 gtk treeview 的选定行获取数据 - gtkmm,c++

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:34 27 4
gpt4 key购买 nike

我有一个 GTK 应用程序,它有一个带有 treeview 和一个按钮的窗口。单击按钮时,我需要从 treeview 中所选行的第一列(也是唯一一列)获取数据。

这是列的类:

class ModelColumns: 
public Gtk::TreeModel::ColumnRecord{
public:

ModelColumns(){ add(m_port_name); }

Gtk::TreeModelColumn<Glib::ustring> m_port_name;
};

这就像这里的例子,但只有一列:http://www.lugod.org/presentations/gtkmm/treeview.html

这是目前的按钮点击信号处理程序:

tvPortstreeview 小部件

tvPortsListtreeview

listStore
static
void on_btnPortSelectOK_clicked (){
Glib::RefPtr<Gtk::TreeSelection> selection = tvPorts->get_selection();
Gtk::TreeModel::iterator selectedRow = selection->get_selected();
//Now what?
//Need to get data from selected row to display it.
}

我搜索了文档和许多示例,试图找出下一步该做什么,但找不到任何 gtkmm 示例,我只能找到 c 或 python 实现的示例。

据我所知,我需要从我的 iterator (selectedRow) 获取一个 TreeRow 对象,我该怎么做?

谢谢。


更新:

我现在正在使用这段代码,它几乎可以正常工作。唯一的问题是它会打印之前的选择。我第一次选择一些东西然后按下按钮它只打印一个新行。第二次打印第一次选择的内容,第三次打印第二次,依此类推。

Glib::RefPtr<Gtk::TreeSelection> selection = tvPorts->get_selection();
Gtk::TreeModel::iterator selectedRow = selection->get_selected();
Gtk::TreeModel::Row row = *selectedRow;
Glib::ustring port = row.get_value(m_Columns.m_port_name);
printf("\nselected port: %s", port.data());

这看起来很奇怪。(m_ColumnsModelColumns 类的实例)


更新 2:

通过添加 fflush(stdout); 解决了这个问题现在一切正常,谢谢。

最佳答案

docs说简单地取消引用 iter 以获取 TreeRow:

Gtk::TreeModel::Row row = *iter;   // 'iter' being your 'selectedRow'
std::cout<<row[0];

关于c++ - 从 gtk treeview 的选定行获取数据 - gtkmm,c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448876/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com