我正在使用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,但我认为语法有点讨厌。
谢谢!
答案 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 ) );