GTK +: передача данных с g_signal_connect не работает - PullRequest
2 голосов
/ 16 ноября 2011

Я пытаюсь передать данные, выделенные в куче, через g_signal_connect, но это демонстрирует странное поведение.

Я передаю значение следующим образом:

int *test = new int(100);
g_signal_connect(G_OBJECT(deviceButton), "button_press_event", G_CALLBACK(showDeviceAndConnect), (gpointer) test);

И распечататьзначение:

static void showDeviceAndConnect(GtkWidget * deviceButton, gpointer data)
{
    int *test = (int *) data;
    fprintf(stderr, "Test: %d\n", *test);
}

Значение, которое печатается постоянно, равно 4.Я изменил новый int () на 3, 5 и т. Д., Он всегда печатает 4.

Я в замешательстве.Кто-нибудь знает, пожалуйста, что не так?

РЕДАКТИРОВАТЬ:

Кто-то помог мне разобраться.Сигнатура функции была на самом деле неправильной и пропускала один параметр.Это довольно глупо, но было трудно понять.

1 Ответ

4 голосов
/ 16 ноября 2011

Да, ваша подпись обратного вызова для GtkWidget :: button_press_event неверна. Но если вы хотите обнаружить щелчок по кнопке GtkButton, подключитесь к GtkButton :: clicked сигнал вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...