在网上搜索答案不会让我解决我的问题:
如果我点击一个单元格,我不想发布一个事件。
由于没有单击事件,接受GtkButton ,我想实现GDK_BUTTON_PRESS_MASK和GDK_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