2009-04-16 93 views
0

我正在使用gtkmm(和glibmm),我想从另一个线程更新GUI。我按照上gtkmm:从其他线程更新gui?

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

的例子,但我有2个问题:

  • 相反能说会道:: MainLoop语句接收的事件,有可能是一个GTK ::主(即运行我的窗口)接受信号?

  • 我可以.connect()函数与参数以某种方式吗?我知道使用SigCX是可能的,但我认为那里的语法有点令人讨厌。

THANKs!

回答

1

您可以让您的Glib :: MainLoop接收事件,然后将其分派到Gtk :: Main。

我相信连接自定义参数的唯一方法是使用sigc :: bind。

例如,假设你想在一个整数,以及指针传递,有问题的部件:

pWidget->signal_foo().connect( 
      sigc::bind<int, Gtk::SomeWidget*>( 
       sigc::mem_fun(*this, &Bar::OnFooBar), i, pWidget));