Получить данные из выбранной строки дерева просмотра gtk - gtkmm, c ++
У меня есть приложение 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
Это обработчик сигнала нажатия кнопки на данный момент:
tvPorts
этоtreeview
виджет
tvPortsList
этоlistStore
дляtreeview
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.
Насколько я могу сказать, мне нужно получитьTreeRow
объект из моегоiterator
(selectedRow
) Как мне это сделать?
Благодарю.
Обновить:
Я сейчас использую этот код, и он почти работает. Единственная проблема заключается в том, что он печатает предыдущий выбор. В первый раз, когда я выбираю что-то, а затем нажимаю кнопку, печатается только новая строка. Второй раз он печатает то, что было выбрано в первый раз, третий печатает т, он второй и т. Д.
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_Columns
является примеромModelColumns
класс)
Обновление 2:
Исправил проблему, добавивfflush(stdout);
Теперь все работает, спасибо.