GTK 双击鼠标的信号如何接收?

发布于 2022-09-30 18:43:27 字数 353 浏览 21 评论 0

单击鼠标的信号:
gtk_widget_add_events (GTK_WIDGET(widget), GDK_BUTTON_PRESS_MASK);
g_signal_connect (GTK_OBJECT(widget), "button-press-event", G_CALLBACK (button_press), NULL);
来处理。

双击鼠标:
gtk_widget_add_events (GTK_WIDGET(widget), GDK_2BUTTON_PRESS_MASK);
后面的信号连接用什么呢?没见到"2button-press-event"的信号啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

聆听风音 2022-10-07 18:43:27

对不起,写错了,双击没有GDK_2BUTTON_PRESS_MASK这个东西。{:2_166:}

但是没见到有处理双击的信号啊?不会没有吧。

高速公鹿 2022-10-07 18:43:27

为控件添加一个button_press_event,在回调函数里:

  1. gboolean on_button_press_event(GtkWidget *widget,   GdkEventButton  *event, gpointer user_data)
  2. {
  3.     if (event->type == GDK_2BUTTON_PRESS && event->button == 0x1)) {
  4.         printf("double click left mouse\n");
  5.    }
  6.     if (event->type == GDK_2BUTTON_PRESS && event->button == 0x3)) {
  7.         printf("double click right mouse\n");
  8.    }
  9.     return FALSE;
  10. }

复制代码

红衣飘飘貌似仙 2022-10-07 18:43:27

谢谢 niutao.linux :
我已经用识别两次button_press_event/button_press_release完成双击的动作。

无疑,你的办法是最好的。

现在开始慢慢对信号和事件的联系有了大概的理解了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文