gtkmm:从其他线程更新gui?

时间:2009-04-16 15:23:05

标签: glib gtkmm

我正在使用gtkmm(和glibmm),我想从另一个线程更新GUI。我已经按照

上的例子

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

但我有两个问题:

  • Gtk :: Main(运行我的窗口)是否可以接受信号,而不是接收事件的Glib :: MainLoop?

  • 我可以用某种方式将.connect()函数与参数联系起来吗?我知道有可能使用SigCX,但我认为语法有点讨厌。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以让您的Glib :: MainLoop接收事件,然后将其发送给Gtk :: Main。

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

例如,假设您想传入一个整数,以及指向相关小部件的指针:

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