c – GTK中的重复窗口失效:几个步骤后失败
发布时间:2020-12-16 06:58:23 所属栏目:百科 来源:网络整理
导读:我有一个定时器,每秒调用一个方法(perform_step). perform_step进行一些计算并使我的窗口无效.这在最初很有效,但在少量迭代之后,窗口的on_expose_event不会被触发.从调试中我发现窗口失效方法已被调用,但未输入事件处理程序. 可能导致这种情况的任何想法?以
我有一个定时器,每秒调用一个方法(perform_step). perform_step进行一些计算并使我的窗口无效.这在最初很有效,但在少量迭代之后,窗口的on_expose_event不会被触发.从调试中我发现窗口失效方法已被调用,但未输入事件处理程序.
可能导致这种情况的任何想法?以下是我发现的一些可能有用的内容: >当perform_step中的计算较短时,在较少的迭代之后事情会中断. 这是一段代码: bool SimDisplay::on_button_press_event(GdkEventButton* event) { Glib::signal_timeout().connect( sigc::mem_fun(*this,&SimDisplay::perform_step),1000 ); } bool SimDisplay::perform_step() { world->step(); //on the last iteration this is called but on_expose_event is never reached get_window()->invalidate(true); } bool SimDisplay::on_expose_event(GdkEventExpose* event) { ... } 解决方法
你的on_button_press_event()缺少一个return语句;确保所有处理程序都返回正确的东西.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |