gpt4 book ai didi

c++ - Gtkmm:将信号处理程序连接到 TreeView 中的组合框

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:39 33 4
gpt4 key购买 nike

这是一个后续问题: How do I add a ComboBox to a TreeView column?

我能够将 ComboBox 放置在 TreeView 中,其中包含我需要的选项。但我似乎无法弄清楚如何将信号处理程序连接到它。所有现有文档都显示这样的连接语句:

m_Combo.signal_changed().connect(sigc::mem_fun(*this, &ExampleWindow::on_combo_changed) );

但我不在 Window 类定义中,因此没有 *this 对象。我正在使用 Glade 创建 GUI 的基本结构。

此外,所有现有文档都显示信号处理程序执行如下操作:

void ExampleWindow::on_combo_changed()
{
Glib::ustring text = m_Combo.get_active_text();
if(!(text.empty()))
std::cout << "Combo changed: " << text << std::endl;
}

其中“m_Combo”对象是全局的,可以简单地访问。但是当 ComboBox 在 TreeView 中时,它是动态的。我将如何着手实际访问组合框?通过参数传递一些东西? signal_changed().connect() 函数似乎对其参数非常挑剔。无论我给它什么,它都会在编译器错误中(字面上)吐出 100 行乱码。结束于:

/usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:6196:1: note: template<class T_arg1, class T_arg2, class T_arg3, class T_arg4, class T_arg5, class T_arg6, class T_arg7, class T_return, class T_obj, class T_obj2> sigc::bound_const_volatile_mem_functor7<T_return, T_obj, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7> sigc::mem_fun(T_obj&, T_return (T_obj2::*)(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7)const volatile)
make: *** [src/RTT_Client_GTK.o] Error 1`

这并没有让我的调试变得更轻松。

最佳答案

首先,如果您正在使用 Glade 创建您的 UI,这可能意味着您正在使用 Gtk::Builder 来加载它(因为 Glade 不再支持其旧的 .glade 格式)。 Gtk::Builder 有一个 get_widget_derived()允许您从 GtkBuilder .xml 文件中直接将小部件提取到派生小部件类中的函数。

其次,您不会直接使用 ComboBox,而是 CellRendererCombo如果您使用的是 TreeView。你会做这样的事情:

Gtk::CellRendererCombo *combo = manage (new Gtk::CellRendererCombo);
combo->signal_changed ().connect (sigc::mem_fun (*this, &ExampleWindow::on_combo_changed);
Gtk::TreeViewColumn *column = manage (new Gtk::TreeViewColumn ("Title", *combo));
column->add_attribute (*combo, "model", model_column_record.combo_model);
column->add_attribute (*combo, "text-column", model_column_record.combo_text_column);
treeview.append_column (*column);

关于c++ - Gtkmm:将信号处理程序连接到 TreeView 中的组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8780594/

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