gtkmm:从其他线程更新 gui?

发布于 2024-07-17 08:35:55 字数 500 浏览 4 评论 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,但我认为语法有点令人讨厌。

谢谢!

I am using gtkmm (and glibmm), and I would like to update the GUI from another thread. I have followed the example on

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

but I have 2 questions:

  • Instead of a Glib::MainLoop receiving the events, is it possible for a Gtk::Main (that runs my window) to accept signals?

  • Can I .connect() functions with arguments in some way? I know it is possible using SigCX but I thought the syntax there was a bit nasty.

THanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里梦着梦中梦 2024-07-24 08:35:55

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

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

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

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

You could have your Glib::MainLoop receive the events, then dispatch it to Gtk::Main.

I believe the only way to connect with custom arguments is to use sigc::bind.

For example, say you wanted to pass in an integer, as well as a pointer to the widget in question:

pWidget->signal_foo().connect( 
            sigc::bind<int, Gtk::SomeWidget*>( 
                sigc::mem_fun( *this, &Bar::OnFooBar ), i, pWidget ) );  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文