在 GTK 中,处理 button-press-event
的回调函数通常具有以下原型:
gboolean on_button_press_event(GtkWidget *widget, GdkEventButton *event);
参数说明
GtkWidget *widget:
- 触发事件的 GTK 窗口小部件(如按钮、绘图区等)。你可以使用这个指针来获取小部件的属性或执行其他操作。
GdkEventButton *event:
- 指向
GdkEventButton
结构体的指针,包含关于按钮按下事件的详细信息,如鼠标位置、被按下的按钮编号等。
- 指向
返回值
- gboolean:
- 如果返回
TRUE
,表示该事件已经被处理,不会继续传播;如果返回FALSE
,则表示未处理该事件,系统将继续向其他事件处理程序传播此事件。
- 如果返回
示例代码
下面是一个简单示例,展示了如何设置和实现这个回调函数:
#include <gtk/gtk.h>
gboolean on_button_press_event(GtkWidget *widget, GdkEventButton *event) {
if (event->type == GDK_BUTTON_PRESS) {
g_print("Button pressed: %d at (%f, %f)\n", event->button, event->x, event->y);
return TRUE; // 表示已处理该事件
}
return FALSE; // 未处理该事件
}
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
// 连接 button-press-event 信号
g_signal_connect(window, "button-press-event", G_CALLBACK(on_button_press_event), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
在这个示例中,我们创建了一个基本的 GTK 窗口,并连接了 button-press-event
信号到我们的回调函数。在按下鼠标时,它将输出按下按钮的信息。
内容由零声教学AI助手提供,问题来源于学员提问