Gtk2 Получить данные из 2 записей с помощью одной и той же кнопки - PullRequest
0 голосов
/ 18 декабря 2018

Итак, я новичок в gtk и пытаюсь создать форму входа в систему, и мне нужно отправить имя пользователя и пароль, когда нажата кнопка «Отправить».Как я могу это сделать?Мой код:

const void button_clicked (GtkWidget *widget,gpointer data)
{
    const gchar* text;
    text = gtk_entry_get_text(GTK_ENTRY(data));
    write(lala,text,100);
}
GtkWidget*window,*label_username,*label_password,*layout,*entry_username,*entry_password,*submit_button;
entry_username = gtk_entry_new();
entry_password = gtk_entry_new();
submit_button = gtk_button_new_with_label("Sumbit");
g_signal_connect(submit_button,"clicked",G_CALLBACK(button_clicked),entry_username;

Как мне сделать функцию submit_button для получения текста из entry_username и entry_password?Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

В gtk для подобных ситуаций было бы лучше передать структуру, которая содержит элементы виджета, в функцию обратного вызова ...

typedef struct MainWindow 
{

GtkWidget *entry_username, *entry_password;

}MAINWINDOW;

int main(
MAINWINDOW *mainwindow = malloc(sizeof(MAINWINDOW));

mainwindow->entry_username = gtk_entry_new();
mainwindow->entry_password = gtk_entry_new();


g_signal_connect(submit_button,"clicked",G_CALLBACK(button_clicked),mainwindow);
}

const void button_clicked (GtkWidget *widget,gpointer data)
{
    MAINWINDOW *mainwindow = data;
    //now you have both the widget's 
        // modify em as per your wish :)
}

это очень грубый пример.но что-то вроде этого должно работать для вашего случая.

...