⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grid.c

📁 linux gtk+基础编程源代码
💻 C
字号:
#include<gtk/gtk.h>static gchar *titles[5]={"编号", "姓名", "性别", "出生年月", "电子邮件"};const gchar *new_row[5];static GtkWidget *clist;static GtkWidget *add_win;static GtkWidget *entry_id;static GtkWidget *entry_name;static GtkWidget *entry_sex;static GtkWidget *entry_birthday;static GtkWidget *entry_email;gint current_row = 0;gint row_count = 0;void on_ok_clicked(GtkButton *button, gpointer data){	new_row[0] = gtk_entry_get_text(GTK_ENTRY(entry_id)); 	new_row[1] = gtk_entry_get_text(GTK_ENTRY(entry_name));	new_row[2] = gtk_entry_get_text(GTK_ENTRY(entry_sex));	new_row[3] = gtk_entry_get_text(GTK_ENTRY(entry_birthday));	new_row[4] = gtk_entry_get_text(GTK_ENTRY(entry_email));	row_count ++;TO	gtk_clist_append(GTK_CLIST(clist), new_row);	gtk_widget_destroy(add_win);}void on_cancel_clicked(GtkButton *button, gpointer data){	gtk_widget_destroy(add_win);}GtkWidget *create_addwin(void){	GtkWidget *win;	GtkWidget *vbox;	GtkWidget *table;	GtkWidget *bbox;	GtkWidget *label;	GtkWidget *button;	win = gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_title(GTK_WINDOW(win), "添加记录");	gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_CENTER);	g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(gtk_widget_destroy), win);	gtk_container_set_border_width(GTK_CONTAINER(win), 10);	vbox = gtk_vbox_new(FALSE, 0);	gtk_container_add(GTK_CONTAINER(win), vbox);	table = gtk_table_new(5, 2, FALSE);	gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 5);	label = gtk_label_new("编号");	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);	entry_id = gtk_entry_new();	gtk_table_attach_defaults(GTK_TABLE(table), entry_id, 1, 2, 0, 1);	label = gtk_label_new("姓名");	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);	entry_name = gtk_entry_new();	gtk_table_attach_defaults(GTK_TABLE(table), entry_name, 1, 2, 1, 2);	label = gtk_label_new("性别");	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 2, 3);	entry_sex = gtk_entry_new();	gtk_table_attach_defaults(GTK_TABLE(table), entry_sex, 1, 2, 2, 3);	label = gtk_label_new("出生年月");	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);	entry_birthday = gtk_entry_new();	gtk_table_attach_defaults(GTK_TABLE(table), entry_birthday, 1, 2, 3, 4);	label = gtk_label_new("电子邮件");	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 4, 5);	entry_email = gtk_entry_new();	gtk_table_attach_defaults(GTK_TABLE(table), entry_email, 1, 2, 4, 5);	bbox = gtk_hbutton_box_new();	gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 5);	gtk_box_set_spacing(GTK_BOX(bbox), 5);	gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);	button = gtk_button_new_from_stock(GTK_STOCK_OK);	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_ok_clicked), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 5);	button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_cancel_clicked), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 5);	gtk_widget_show_all(win);	return win;}GtkWidget *create_button(gchar *stockid){	GtkWidget *button;	GtkWidget *image;		image = gtk_image_new_from_stock(stockid, GTK_ICON_SIZE_MENU);	button = gtk_button_new();	gtk_container_add(GTK_CONTAINER(button), image);	return button;}void goto_first(GtkButton *button, gpointer data){	current_row = 0;	gtk_clist_select_row(GTK_CLIST(clist), current_row, 0);}void goto_last(GtkButton *button, gpointer data){	current_row --;	gtk_clist_select_row(GTK_CLIST(clist), current_row, 0);}void go_back(GtkButton *button, gpointer data){	current_row --;	if(current_row == -1) return;	gtk_clist_select_row(GTK_CLIST(clist), current_row, 0);}void go_forward(GtkButton *button, gpointer data){	current_row ++;	if(current_row > row_count) return;	gtk_clist_select_row(GTK_CLIST(clist), current_row, 0);}void append_row(GtkWidget *button, gpointer data){	add_win = create_addwin();	gtk_widget_show(add_win);}int main(int argc, char **argv){	GtkWidget *window;	GtkWidget *vbox;	GtkWidget *bbox;	GtkWidget *button;	GtkTooltips *button_tips;	gtk_init(&argc, &argv);	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);	g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);	gtk_window_set_title(GTK_WINDOW(window), "列表软件");	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);	gtk_container_set_border_width(GTK_CONTAINER(window), 10);	vbox = gtk_vbox_new(FALSE, 0);	gtk_container_add(GTK_CONTAINER(window), vbox);	clist = gtk_clist_new_with_titles(5, titles);	gtk_box_pack_start(GTK_BOX(vbox), clist, TRUE, TRUE, 5);	bbox = gtk_hbutton_box_new();	button_tips = gtk_tooltips_new();	gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 5);	gtk_box_set_spacing(GTK_BOX(vbox), 5);	gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);	gtk_button_box_set_child_size(GTK_BUTTON_BOX(bbox), 20, 20);	button = create_button(GTK_STOCK_GOTO_FIRST);	gtk_tooltips_set_tip(GTK_TOOLTIPS(button_tips), button, "转到首行", "首行");	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(goto_first), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 2);	button = create_button(GTK_STOCK_GO_BACK);	gtk_tooltips_set_tip(GTK_TOOLTIPS(button_tips), button, "转到前一行", "前一行");	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(go_back), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 2);	button = create_button(GTK_STOCK_GO_FORWARD);	gtk_tooltips_set_tip(GTK_TOOLTIPS(button_tips), button, "转到下一行", "下一行");	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(go_forward), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 2);	button = create_button(GTK_STOCK_GOTO_LAST);	gtk_tooltips_set_tip(GTK_TOOLTIPS(button_tips), button, "转到尾行", "尾行");	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(goto_last), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 2);	button = create_button(GTK_STOCK_ADD);	gtk_tooltips_set_tip(GTK_TOOLTIPS(button_tips), button, "新增一行", "新增");	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(append_row), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 2);	button = create_button(GTK_STOCK_QUIT);	gtk_tooltips_set_tip(GTK_TOOLTIPS(button_tips), button, "退出", "退出");	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gtk_main_quit), NULL);	gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 5);	gtk_widget_show_all(window);	gtk_main();	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -