0

私は gtkmm (および glibmm) を使用しており、別のスレッドから GUI を更新したいと考えています。私はの例に従いました

http://www.gtkmm.org/docs/glibmm-2.4/docs/reference/html/thread_2dispatcher_8cc-example.html#_a1

しかし、私は2つの質問があります:

  • Glib::MainLoop がイベントを受け取る代わりに、Gtk::Main (ウィンドウを実行する) がシグナルを受け取ることは可能ですか?

  • 何らかの方法で .connect() 関数に引数を付けることはできますか? SigCX を使用して可能であることは知っていますが、構文が少し厄介だと思いました。

ありがとう!

4

1 に答える 1

1

Glib::MainLoop にイベントを受け取ってもらい、それを Gtk::Main にディスパッチすることができます。

カスタム引数に接続する唯一の方法は、sigc::bind を使用することだと思います。

たとえば、問題のウィジェットへのポインターだけでなく、整数も渡したいとします。

pWidget->signal_foo().connect( 
            sigc::bind<int, Gtk::SomeWidget*>( 
                sigc::mem_fun( *this, &Bar::OnFooBar ), i, pWidget ) );  
于 2009-04-30T19:23:36.313 に答える