0

我为窗口的 F​​ile->Quit 按钮编写了一个事件事件处理程序:

void on_file_quit() {
  int err = pthread_cancel( work ); 
  if (err) {
     std::cerr << "no thread to cancel\n";
  }
  else { 
    pthread_join( work, NULL );
  }
}

以这种方式实例化它:

pfile_quit->signal_activate().connect( sigc::ptr_fun(on_file_quit) );

我想在 on_file_quit() 结束时关闭窗口,就像按下窗口顶部的关闭按钮一样。我还没有在任何地方找到解决方案。提前感谢您的帮助!

4

2 回答 2

0

感谢您的回复。会调用Gtk::Widget::hide()关闭窗口以便我可以退出应用程序吗?我的解决方案是简单地调用窗口的析构函数,如下所示:

void on_file_quit() {
  int err = pthread_cancel( work ); 
  if (err) {
     std::cerr << "no thread to cancel\n";
  }
  else { 
    pthread_join( work, NULL );
  }
  delete pwindow;
  pwindow = NULL; 
}

然后我将此处理程序连接到 x 按钮:

 g_signal_connect (pwindow->gobj(), "delete_event", G_CALLBACK (on_file_quit), NULL);

我无法弄清楚如何在 gtkmm 中执行此操作。我对这个解决方案很满意,但我不知道它是最安全/最标准的。

这也有效:pwindow->hide().

于 2012-07-12T19:20:45.297 回答
0

您可以使用 Gtk::Widget::hide() 关闭窗口。如果您想做与单击 X 按钮(发送 delete_event 信号)时发生的相同的事情,只需直接调用您的 on_delete_event() 处理程序。

顺便说一句,您不是在“实例化”信号处理程序。您正在连接信号处理程序。此外,这是 gtkmm,而不是 GTK+。

于 2012-07-11T10:34:01.063 回答