gtkmm:从其他线程更新gui?
问题描述:
我正在使用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!
答
您可以让您的Glib :: MainLoop接收事件,然后将其分派到Gtk :: Main。
我相信连接自定义参数的唯一方法是使用sigc :: bind。
例如,假设你想在一个整数,以及指针传递,有问题的部件:
pWidget->signal_foo().connect(
sigc::bind<int, Gtk::SomeWidget*>(
sigc::mem_fun(*this, &Bar::OnFooBar), i, pWidget));