возникла такая проблема, есть 3 текстовых лейбла и одна кнопка, нужно передать в колбэк все 3 текстовых поля, чтоб при помощи кнопки они изменялись.
объединил в структуру поля
typedef struct {
GtkWidget *string;
GtkWidget *string1;
GtkWidget *button;
GtkWidget *string2;
} StrData;
далее создаю элементы в цикле и заполняю их
StrData *str[i];
str[i] = calloc (1, sizeof(StrData));
str[i]->string = gtk_label_new(row[0]);
gtk_fixed_put(GTK_FIXED(frame), str[i]->string, 20, 60+(i*50));
str[i]->string1 = gtk_label_new(row[1]);
gtk_fixed_put(GTK_FIXED(frame), str[i]->string1, 20, 80+(i*50));
str[i]->string2 = gtk_label_new(row[2]);
gtk_fixed_put(GTK_FIXED(frame), str[i]->string1, 20, 100+(i*50));
str[i]->button = gtk_button_new_with_label("-");
gtk_widget_set_size_request(str[i]->button, 50, 20);
gtk_fixed_put(GTK_FIXED(frame), str[i]->button, 20, 120+(i*50));
g_signal_connect(str[i]->button, "clicked", G_CALLBACK(decrease), str[i]);
сама колбэк-функция
void decrease(GtkWidget *widget, gpointer str)
{
gtk_label_set_text(str->string, "test");
gtk_label_set_text(str->string1, "test1");
gtk_label_set_text(str->string2, "test2");
}
и тут компилятор (gcc 4.4.3) ругается
main.c:10: error: request for member ‘string’ in something not a structure or union
почему это не структура? то есть доступа к виджетам нет, вроде все проверил, что не так? напутал что то с указателями?