Как создать страницу входа с кодом gtk3 c ++? [закрыто]

Я хочу создать страницу входа в систему с помощью кода gtk3 c ++. это мой код на C ++:

#include <gtk/gtk.h>


void create_window(GtkWidget *button, gpointer window) {

GtkWidget *win, *label;

//Username and Password to validate credentials
const string USERNAME = "user";
const string PASSWORD = "123456";
string username, password;


//Checking if user's entered credentials are equal to actual USERNAME and PASSWORD 
if (username == USERNAME && password == PASSWORD)
{
    label = gtk_label_new("Username and Password is correct.");
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_container_add(GTK_CONTAINER(win), label);
    gtk_widget_show_all(win);
}

else if (username != USERNAME || password != PASSWORD)

{
    label = gtk_label_new("Username and Password is incorrect.");
    win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_container_add(GTK_CONTAINER(win), label);
    gtk_widget_show_all(win);

}

}

static void destroy(GtkWidget *widget, gpointer data){
gtk_main_quit();
}

int main(int argc, char *argv[]){

GtkWidget *window;
GtkWidget *grid;
GtkWidget *Login_button, *Quit_button;
GtkWidget *u_name;
GtkWidget *pass;
GtkWidget *label_user;
GtkWidget *label_pass;
GtkWidget  *button_container;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Login page");
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
gtk_window_set_resizable(GTK_WINDOW(window), FALSE); 

grid = gtk_grid_new();
gtk_grid_set_row_spacing(GTK_GRID(grid), 3);
gtk_container_add(GTK_CONTAINER(window), grid);

label_user = gtk_label_new("Username  ");
label_pass = gtk_label_new("Password  ");

u_name = gtk_entry_new();
gtk_entry_set_placeholder_text(GTK_ENTRY(u_name), "Username");
gtk_grid_attach(GTK_GRID(grid), label_user, 0, 1, 1, 1);
gtk_grid_attach(GTK_GRID(grid), u_name, 1, 1, 2, 1);

pass = gtk_entry_new();
gtk_entry_set_placeholder_text(GTK_ENTRY(pass), "Password");
gtk_grid_attach(GTK_GRID(grid), label_pass, 0, 2, 1, 1);
gtk_entry_set_visibility(GTK_ENTRY(pass), 0);
gtk_grid_attach(GTK_GRID(grid), pass, 1, 2, 1, 1);

Login_button = gtk_button_new_with_label("Log in");
g_signal_connect(Login_button, "clicked", G_CALLBACK(create_window), NULL);
gtk_grid_attach(GTK_GRID(grid), Login_button, 0, 3, 2, 1);

Quit_button = gtk_button_new_with_label("Quit");
g_signal_connect(Quit_button, "clicked", G_CALLBACK(gtk_main_quit), NULL);
gtk_grid_attach(GTK_GRID(grid), Quit_button, 0, 4, 2, 1);


gtk_widget_show_all(window);

gtk_main();

return 0;
}

Но я не могу ввести имя пользователя и пароль в свой код.

Например, имя пользователя - Алиреза, а пароль - @ 12345 @.

когда я вставляю имя пользователя и пароль, если имя пользователя и пароль были правильными, страница входа уничтожается и открывается вторая страница (новая страница). Но если какое-либо из них было неправильным, у нас должны появиться следующие сообщения на новой странице:
Если имя пользователя было неправильным, сообщение выглядит следующим образом: Имя пользователя неверно Если пароль был неправильным, сообщение выглядит следующим образом: Пароль это неверно.

1
задан 23 September 2016 в 13:18

1 ответ

Я не знаю, используете ли Вы базу данных, но если не необходимо создать функцию, как Вы назвали в "create_window" (g_signal_connect(Login_button, "clicked", G_CALLBACK(create_window), NULL);) сигнала в этой функции, добавляет Ваш код проверки

If (Username and Password was correct)
    Login page destroy and seconde page (new page) open

If (Username was correct)
     Username is incorrect 
If (Password was incorrect)
     Password is incorrect.

, Если это, не работает на Вас, воспроизводят назад, и я напишу правильный код с помощью gtkmm/c ++

, это - функция, но необходимо записать сообщения

статическая пустота create_window (GtkWidget *виджет, gpointer данные) {если (ИМЯ ПОЛЬЗОВАТЕЛЯ! = gtk_entry_get_text (GtkEntry *u_name)) {//Ваше диалоговое окно сообщения здесь//g_print ("Имя пользователя является неправильным. \n");}, если (ПАРОЛЬ! = gtk_entry_get_text (GtkEntry *передача)) {//Ваше диалоговое окно сообщения здесь//g_print ("Пароль является неправильным \n");}

}

0
ответ дан 8 December 2019 в 08:48

Другие вопросы по тегам:

Похожие вопросы: