Я пишу собственный виджет для 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 при добавлении виджета, должен быть перехвачен моим виджетом через метод прокси-сигнала или что-то еще? Понятия не имею.
Как я могу это сделать?