我为我的窗口的File-> 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()的末尾关闭窗口,就像按下窗口顶部的关闭按钮一样。我没有在任何地方找到解决方案。在此先感谢您的帮助!
答案 0 :(得分:0)
您可以使用Gtk :: Widget :: hide()关闭窗口。如果你想做同样的事情,单击X按钮时会发生(发送delete_event信号),只需直接调用你的on_delete_event()处理程序。
顺便说一下,你没有“实例化”信号处理程序。您正在连接信号处理程序。此外,这是gtkmm,而不是GTK +。
答案 1 :(得分: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()
。