gtk3 + sqlite3实现登录注册功能(前后端分离)完整源码
立即下载
资源介绍:
gtk3实现的登录和注册可视化窗口
/**
******************************************************************************
* @file : gtk_window.c
* @author : niuniu
* @brief : gtk界面设计
* @attention : None
* @date : 2024/8/15
******************************************************************************
*/
#include
#include "gtk_window.h"
GtkWidget *main_window;
GtkWidget *login_window;
GtkWidget *register_window;
GtkWidget *function_window;
GtkWidget* login_entry_id;
GtkWidget* register_entry_id;
GtkWidget* login_yzm;
GtkWidget* login_entry_paswd;
GtkWidget* login_entry_yzm;
GtkWidget* register_yzm;
GtkWidget* register_entry_id;
GtkWidget* register_entry_paswd;
GtkWidget* register_entry_name;
GtkWidget* register_entry_level;
GtkWidget* register_entry_yzm;
void main_window_to_login_window(GtkButton* btn, gpointer user_data);
void main_window_to_register_window(GtkButton* btn, gpointer user_data);
void login_window_to_register_window(GtkButton* btn, gpointer user_data);
void register_window_to_login_window(GtkButton* btn, gpointer user_data);
void login_window_to_function_window(GtkButton* btn, gpointer user_data);
void window_init()
{
main_window_init();
login_window_init();
register_window_init();
}
//-----------------------------------------------------------------------------------------
// -------》》》》》》》》》》* ui设计 *《《《《《《《《《《《《《《《《《《《----------------------
//-----------------------------------------------------------------------------------------
// 初始化主窗口
void main_window_init()
{
GtkWidget *overlay; // Overlay 容器,用于叠加控件
GtkWidget *grid; // 网格布局,用于布局按钮和标题
GtkWidget *login_button; // 登录按钮
GtkWidget *register_button; // 注册按钮
GtkWidget *background_image; // 背景图片
GtkWidget *main_title; // 主标题
// 创建主窗口并设置标题
main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(main_window), "管理员界面"); // 设置窗口标题为“管理员界面”
gtk_window_set_default_size(GTK_WINDOW(main_window), 1024, 600); // 设置窗口默认大小为 1024x600
// 设置窗口在屏幕中央显示
gtk_window_set_position(GTK_WINDOW(main_window), GTK_WIN_POS_CENTER);
// 创建 Overlay 容器
overlay = gtk_overlay_new(); // 创建一个 Overlay 容器,用于在窗口中叠加控件
gtk_container_add(GTK_CONTAINER(main_window), overlay); // 将 Overlay 容器添加到主窗口中
// 创建背景图片
background_image = gtk_image_new_from_file("background.jpg"); // 从文件加载背景图片
gtk_overlay_add_overlay(GTK_OVERLAY(overlay), background_image); // 将背景图片添加到 Overlay 中
gtk_widget_set_halign(background_image, GTK_ALIGN_FILL); // 设置背景图片水平填充
gtk_widget_set_valign(background_image, GTK_ALIGN_FILL); // 设置背景图片垂直填充
// 创建网格布局
grid = gtk_grid_new(); // 创建一个新的网格布局
gtk_grid_set_row_spacing(GTK_GRID(grid), 20); // 设置网格行间距为 20 像素
gtk_grid_set_column_spacing(GTK_GRID(grid), 30); // 设置网格列间距为 30 像素
gtk_container_set_border_width(GTK_CONTAINER(grid), 30); // 设置网格布局的边框宽度为 30 像素
// 创建标题并设置样式为橙色
main_title = gtk_label_new(NULL); // 创建一个空的标签控件
gtk_label_set_markup(GTK_LABEL(main_title), "森林火灾监控预警系统");
// 使用标记设置标签的字体大小和颜色
gtk_widget_set_halign(main_title, GTK_ALIGN_CENTER); // 设置标题标签水平居中
gtk_widget_set_size_request(main_title, 300, 100); // 设置标题的最小宽度为 300 像素,高度为 100 像素
gtk_grid_attach(GTK_GRID(grid), main_title, 0, 0, 3, 2); // 将标题标签添加到网格布局中,跨越 3 列和 2 行
// 创建登录按钮
login_button = gtk_button_new_with_label("登录"); // 创建一个带有“登录”文本的按钮
gtk_widget_set_size_request(login_button, 100, 40); // 设置登录按钮的最小宽度为 100 像素,高度为 40 像素
customize_button_style(login_button, "#00FFFF", 28, TRUE); // 自定义按钮样式,设置颜色和字体大小
gtk_grid_attach(GTK_GRID(grid), login_button, 0, 3, 1, 1); // 将登录按钮添加到网格布局的第 0 列,第 3 行
// 创建注册按钮
register_button = gtk_button_new_with_label("注册"); // 创建一个带有“注册”文本的按钮
customize_button_style(register_button, "#00FFFF", 28, TRUE); // 自定义按钮样式,设置颜色和字体大小
gtk_widget_set_size_request(register_button, 100, 40); // 设置注册按钮的最小宽度为 100 像素,高度为 40 像素
gtk_grid_attach(GTK_GRID(grid), register_button, 2, 3, 1, 1); // 将注册按钮添加到网格布局的第 2 列,第 3 行
// 将网格布局添加到 Overlay 容器中
gtk_overlay_add_overlay(GTK_OVERLAY(overlay), grid); // 将网格布局添加到 Overlay 中
gtk_widget_set_halign(grid, GTK_ALIGN_CENTER); // 设置网格布局水平居中
gtk_widget_set_valign(grid, GTK_ALIGN_CENTER); // 设置网格布局垂直居中
// 连接信号
g_signal_connect(main_window, "destroy", G_CALLBACK(gtk_main_quit), NULL); // 当窗口关闭时退出 GTK 主循环
g_signal_connect(login_button, "clicked", G_CALLBACK(main_window_to_login_window), NULL); // 当点击登录按钮时,切换到登录窗口
g_signal_connect(register_button, "clicked", G_CALLBACK(main_window_to_register_window), NULL); // 当点击注册按钮时,切换到注册窗口
}
// 初始化登录窗口
void login_window_init()
{
GtkWidget *overlay; // Overlay 容器,用于叠加控件
GtkWidget *grid; // 网格布局,用于布局控件
GtkWidget *login_id_label; // 账号标签
GtkWidget *login_paswd_label; // 密码标签
GtkWidget *login_title; // 登录界面标题
GtkWidget *login_ok_button; // 登录按钮
GtkWidget *login_to_register_button; // 注册按钮
GtkWidget *background_image; // 背景图片
// 创建登录窗口并设置标题
login_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(login_window), "监控预警系统——管理员"); // 设置窗口标题为“监控预警系统——管理员”
gtk_window_set_default_size(GTK_WINDOW(login_window), 1024, 600); // 设置窗口默认大小为 1024x600
// 设置窗口在屏幕中央显示
gtk_window_set_position(GTK_WINDOW(login_window), GTK_WIN_POS_CENTER);
// 设置窗口可调整大小
gtk_window_set_resizable(GTK_WINDOW(main_window), TRUE); // 允许用户调整窗口大小
// 创建 Overlay 容器
overlay = gtk_overlay_new(); // 创建一个 Overlay 容器,用于在窗口中叠加控件
gtk_container_add(GTK_CONTAINER(login_window), overlay); // 将 Overlay 容器添加到登录窗口中
// 创建背景图片
background_image = gtk_image_new_from_file("background.jpg"); // 从文件加载背景图片
gtk_overlay_add_overlay(GTK_OVERLAY(overlay), background_image); // 将背景图片添加到 Overlay 中
gtk_widget_set_halign(background_image, GTK_ALIGN_FILL); // 设置背景图片水平填充
gtk_widget_set_valign(background_image, GTK_ALIGN_FILL); // 设置背景图片垂直填充
gtk_widget_set_hexpand(background_image, TRUE); // 使背景图片水平扩展以填满窗口
gtk_widget_set_vexpa