我正在为 Gtkmm 编写一个自定义小部件,它应该显示一个巨大的数据集(想象一下像 4096x256 字符数据表之类的东西)。
主要是出于优雅的原因,但也可能在 Glade/Gtk-Builder 编辑器中使用,我希望这个小部件本身支持 ScrolledWindow,也就是说,一旦它被设置为 ScrolledWindow 的子级,它就会被识别为可滚动的小部件,允许在其上设置水平和垂直调整对象,随后可以对其进行篡改。
似乎这样做了,我需要在我的小部件的构造函数中做这样的事情:
// get Gtk C type from wrapper class
GtkWidget* gwidget = this->gobj();
// imagine code here that magically creates a gobject signal,
// that we can catch in C++.
// this is actually the part which I don't know how to do.
guint my_signal = magic_way_to_create_this_signal(
&MyClass::rainbow_unicorn_signal_handler);
// make ScrolledWindow recognize this window as scrollable
GTK_WIDGET_GET_CLASS(gwidget)->set_scroll_adjustments_signal = my_signal;
稍后,添加小部件时ScrolledWindow发出的信号需要通过信号代理方法或其他什么被我的Widget捕获?我不知道。
我怎样才能做到这一点?