我有一个带有两个按钮(A,B)和一个绘图区域(C)的小 GTK-Application 。当我单击A时,应重新计算C的大小并使用 gtk_widget_set_size_request() 进行设置。这将导致一个暴露事件,其处理程序将计算一些数据。此外,单击A将在B处发出clicked信号,其处理程序需要由C的expose-event计算的数据。
事实上,一切正常,但暴露事件以某种方式延迟,并且单击的处理程序在之前被调用并且数据(您可能猜到了)丢失了。
a_handler() {
new_size = calculate_size();
gtk_widget_set_size_request(C, new_size); //Will cause expose-event
g_signal_emit_by_name(B, "clicked");
}
b_handler() {
calculate_something(data); //Error
}
c_handler() {
draw_something();
data = calcluate_data();
}
我能做些什么?