巨大なデータセットを表示することになっている 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 によって発行されたシグナルは、シグナル プロキシ メソッドなどを介してウィジェットによってキャッチされる必要がありますか? 何も思いつきません。
これどうやってするの?