У меня есть TreeView gtkmm, используя ListStore.Я использую это как меню выбора статического списка.У меня проблемы с просмотром, когда пользователь меняет строки и какая строка выбрана.
Я пытался использовать m_TreeView.signal_row_activated().connect( sigc::mem_fun(*this, &optionList::row_activated) );
, но получаю ошибку
error: no match for call to ‘(sigc::bound_mem_functor0<void, optionList>) (const Gtk::TreePath&, Gtk::TreeViewColumn* const&)’ { return functor_(_A_arg1, _A_arg2); }
Я также пытался использоватьизменил сигналы, но я получаю те же ошибки.Мне не удалось найти эти ошибки в Google.Я также не видел другого способа создания меню выбора статического списка.
Мой код выглядит следующим образом:
optionList::optionList() {
set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
add(m_TreeView);
m_refListStore = Gtk::ListStore::create(m_Columns);
m_TreeView.set_model(m_refListStore);
m_TreeView.set_activate_on_single_click(true);
std::array<Glib::ustring, 3> options = {"Status", "Plugins", "Config"};
for(const auto & option : options) {
std::ostringstream text;
text << option;
Gtk::TreeModel::Row row = *(m_refListStore->append());
row[m_Columns.m_col_text] = text.str();
}
m_TreeView.append_column("Options", m_Columns.m_col_text);
m_TreeView.signal_state_changed().connect( sigc::mem_fun(*this, &optionList::row_activated) ); //This line produces the error
show_all_children();
}
функция optionList::row_activated
это просто cout
, поэтому я знаюпо крайней мере, он активирован.Если я удаляю соединительную линию, то она компилируется и работает нормально, но у меня нет никакого способа узнать, выбрана ли она.
Я ожидаю увидеть фразу A row has been selected
в консоли (какэто то, что выводит row_activated
) каждый раз, когда я выбираю другую строку.Однако я не могу даже скомпилировать код с включенной выше строкой.
Как минимум, как я могу решить эту проблему подключения, чтобы код мог скомпилировать и активировать функцию?
Редактировать: я считаю, что я все испортил и мне нужно было отправить, используя sigc::bind()