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

📄 button_box.c

📁 在Linux环境下用c编写的GTK+源码
💻 C
字号:
#include<gtk/gtk.h>

/*按下某个按钮后,在命令行上打印出按钮名和新的状态*/
void click_button(GtkWidget *widget,gpointer *data)
{
	g_print("%s ",(char *)data);

	if(GTK_TOGGLE_BUTTON(widget)->active)
		g_print("state is active\n");
	else
		g_print("state is not active\n");
}

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

int main(int argc,char **argv)
{
	GtkWidget 	*window;
	GtkWidget 	*box;
	GSList    	*group;
    	GtkWidget 	*check,*radio;
	
	gtk_init(&argc,&argv);
	
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_signal_connect(GTK_OBJECT(window),"destroy",
				GTK_SIGNAL_FUNC(destroy),NULL);
	gtk_container_border_width(GTK_CONTAINER(window),50);

	/*生成一个垂直box容器,并将该容器加入到主窗口中*/
	box = gtk_vbox_new(FALSE,0);
	gtk_container_add(GTK_CONTAINER(window),box);
	
	/*以下生成两个check按钮,将它们加入到box容器中,并显示出来*/
	check = gtk_check_button_new_with_label("coffee");
	g_signal_connect(GTK_OBJECT(check),"clicked",
				GTK_SIGNAL_FUNC(click_button),"check button1");
	gtk_box_pack_start(GTK_BOX(box),check,TRUE,TRUE,0);
    	gtk_widget_show(check);
	
	check = gtk_check_button_new_with_label("tea");
    	g_signal_connect(GTK_OBJECT(check),"clicked",
				GTK_SIGNAL_FUNC(click_button),"check button2");
    	gtk_box_pack_start(GTK_BOX(box),check,TRUE,TRUE,0);
    	gtk_widget_show(check);
	
	/*以下生成三个radio按钮,将它们加入到box容器中,并显示出来*/
	/* 
	  注意:生成第一个radio按钮时group参数为NULL,而后每次在该
	  组中创建一个radio按钮都要使用gtk_radio_button_group 函数获取
	  新的group值
	*/
	radio = gtk_radio_button_new_with_label(NULL,"Apple");
	g_signal_connect(GTK_OBJECT(radio),"clicked",
	GTK_SIGNAL_FUNC(click_button),"Apple");
    	gtk_box_pack_start(GTK_BOX(box),radio,TRUE,TRUE,0);
	gtk_widget_show(radio);
	
	group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio));
    	radio = gtk_radio_button_new_with_label(group,"Banana");
   	g_signal_connect(GTK_OBJECT(radio),"clicked",
	GTK_SIGNAL_FUNC(click_button),"Banana");
    	gtk_box_pack_start(GTK_BOX(box),radio,TRUE,TRUE,0);
	gtk_widget_show(radio);
	
	group = gtk_radio_button_group(GTK_RADIO_BUTTON(radio));
    	radio = gtk_radio_button_new_with_label(group,"Orange");
   	g_signal_connect(GTK_OBJECT(radio),"clicked",
	GTK_SIGNAL_FUNC(click_button),"Orange");
	/*将第三个radio按钮设置为选中状态*/
   	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio),TRUE);
    	gtk_box_pack_start(GTK_BOX(box),radio,TRUE,TRUE,0);
	gtk_widget_show(radio);
	
	gtk_widget_show(box);
	gtk_widget_show(window);
	
	gtk_main();
	return 0;
}

⌨️ 快捷键说明

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