Webで回答を検索しても、問題は解決しません。
1つのセルをクリックした場合、GtkTableでイベントをスローしたくありません。
クリックイベントがないので、GtkButtonを受け入れます。クリック中にテーブル上のマウスの位置をキャッチするために、 GDK_BUTTON_PRESS_MASKとGDK_BUTTON_RELEASE_MASKを実装したいと思いました。GtkDrawingAreaでうまく機能します!
以下のスニペットを試しましたが、何も起こりませんでした。誰かが私に手がかりを与えることができるかもしれません:)
小さなサンプル:
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;
}