我需要一个事件来处理我程序的工具栏按钮上的按下和释放。 我使用按钮按下事件但是当我点击我的按钮时没有任何事情发生。
我正在使用Glade Interface Designer设计我的GUI。当我在gtk +&中调用按钮按事件时,请解释一下。这是我需要的事件吗?
'button-press-event'应该按下鼠标按钮。我使用gtk_widget_add_device_events()将按钮按钮添加到按钮接收的事件列表中,但我认为它应该默认获取它们。
gboolean
on_skip_backward_toolbutton_pressed (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
{
g_print ("pressed");
timeout_id = g_timeout_add(500, (GSourceFunc) change_freq_timeout, (gpointer) FALSE);
return FALSE;
}
gboolean
on_skip_forward_toolbutton_pressed(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
{
g_print ("pressed");
timeout_id = g_timeout_add(500, (GSourceFunc) change_freq_timeout, (gpointer) TRUE);
return FALSE;
}
gboolean
on_skip_toolbutton_released(GtkWidget *widget, GdkEventButton *event, gpointer user_data)
{
g_print ("released");
if (timeout_id) {
g_source_remove(timeout_id);
timeout_id = 0;
}
return FALSE;
}
change_freq_timeout回调只有一条指令需要很长时间才能处理。
在超时处理程序中运行mainiteration通常被认为是一个“坏主意”,因为它不能很好地工作。
是否存在可用于解决问题的其他秘密技术?