Como projetar a página de login com código gtk3 c ++? [fechadas]

1

Eu quero projetar a página de login com o código gtk3 c ++. este é o meu código 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;
}

Mas não consigo introduzir o nome de usuário e a senha ao meu código.

Por exemplo, o nome de usuário é Alireza e a senha é @ 12345 @.

quando eu inserir o nome de usuário e a senha, se o nome de usuário e a senha estiverem corretos, a página de login destruir e a página seconde (nova página) abrir. Mas se algum deles estiver incorreto, devemos ter essas mensagens em uma nova página:
    Se o nome de usuário estava incorreto, a mensagem é: o nome de usuário está incorreto     Se a senha estava incorreta, a mensagem é: a senha está incorreta.

    
por Alireza Alipour Bloordokani 22.09.2016 / 13:39

1 resposta

0

Eu não sei se você está usando um banco de dados, mas se não você precisa criar uma função como você nomeou no sinal "create_window" (g_signal_connect(Login_button, "clicked", G_CALLBACK(create_window), NULL);) dentro dessa função adicione seu código de verificação

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.

Se isso não funcionar, volte e eu escreverei o código correto usando gtkmm / c ++

esta é a função, mas você precisa escrever as mensagens

static void create_window (widget GtkWidget *, dados gpointer) {     if (USERNAME! = gtk_entry_get_text (GtkEntry * u_name))     {         // seu dyalog da mensagem aqui         // g_print ("Nome de usuário está incorreto. \ n");     }     if (PASSWORD! = gtk_entry_get_text (GtkEntry * pass))     {         // seu dyalog da mensagem aqui         // g_print ("Senha incorreta. \ n");     }

}

    
por manneta 23.09.2016 / 09:49