gtkmm,如何让我的程序等待来自按钮的点击信号?

gtkmm, how can I make my program waiting the clicked signal from a button?

我想让我的程序等到按钮被点击。

问题是,

我没有找到解决该问题的任何策略。

有什么反对使用 Gtkmm 的基于事件的方式,即将监听器连接到按钮的点击信号吗?

这看起来像这样:

helloworld.h

class HelloWorld : public Gtk::Window
{

// ...

protected:
  //Signal handlers:
  void on_button_clicked();

  //Member widgets:
  Gtk::Button m_button;
};

helloworld.cc

// ...
HelloWorld::HelloWorld()
: m_button("Hello World")   // creates a new button with label "Hello World".
{
  // ...

  // When the button receives the "clicked" signal, it will call the
  // on_button_clicked() method defined below.
  m_button.signal_clicked().connect(sigc::mem_fun(*this,
              &HelloWorld::on_button_clicked));


  // ...
}

void HelloWorld::on_button_clicked()
{
  std::cout << "Hello World" << std::endl;
}

完整示例可用 here

基本上,在 HelloWorld::on_button_clicked 中,您将执行必须等到按钮被单击的操作。

好的,我找到了解决方案:

// computation going on
while( Gtk::Main::events_pending() )
Gtk::Main::iteration();
// computation continued

https://developer.gnome.org/gtkmm/stable/classGtk_1_1Main.html#a2a2a6cddef82f8c52026790f3f7887e0

欢迎任何评论或其他回答