c/c++语言开发共享如何在GtkTable上实现按钮按事件

在网上搜索答案不会让我解决我的问题:

如果我点击一个单元格,我不想发布一个事件。

由于没有单击事件,接受GtkButton ,我想实现GDK_BUTTON_PRESS_MASKGDK_BUTTON_RELEASE_MASK以在点击期间捕获表上鼠标的位置。 适用于GtkDrawingArea!

尝试了snipet轰鸣声,但没有任何事情发生,也许有人可以给我一个线索:)

小样本:

static void table_press(GtkWidget *widget, GdkEventButton *event) { printf("table pressed"); } int main(int argc, char **argv) { GtkWidget *window; GtkWidget* table; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW (window), "table click"); table = gtk_table_new(2, 5, TRUE); gtk_container_add(GTK_CONTAINER (window), table); gtk_widget_add_events(table, GDK_BUTTON_PRESS_MASK); g_signal_connect(GTK_OBJECT (table), "button-press-event", G_CALLBACK (table_press), NULL); g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), G_OBJECT(window)); gtk_widget_show_all(window); gtk_main(); main_exit(); return 0; } 

    您没有收到事件,因为GtkTable没有与之关联的GdkWindow 。 您可以使用GtkEventBox ,它允许您接受通常不接受事件的小部件上的事件。 这是从GtkBin派生的,所以有趣的代码看起来像这样。

     table = gtk_table_new(2, 5, TRUE); event_box = gtk_event_box_new(); gtk_container_add(GTK_CONTAINER (window), event_box); gtk_container_add(GTK_CONTAINER (event_box), table); g_signal_connect(GTK_OBJECT (event_box), "button-press-event", G_CALLBACK (table_press), NULL); 

      以上就是c/c++开发分享如何在GtkTable上实现按钮按事件相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549790.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐