#include<gtk/gtk.h>
/*函数声明*/
GtkWidget* makeTable();
GtkWidget* makeTextEntry();
GtkWidget* makecheckButtons();
GtkWidget* makeButtonBox();
/*点击check按钮的回调函数*/
void click_button(GtkWidget *widget,gpointer *data)
{
g_print("click %s ",(char *)data);
if(GTK_TOGGLE_BUTTON(widget)->active)
g_print("and state is active\n");
else
g_print("and state is not active\n");
}
void destroy(GtkWidget *widget,gpointer *data)
{
gtk_main_quit();
}
int main(int argc,char **argv)
{
GtkWidget *window;
GtkWidget *table;
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),30);
table = makeTable();
gtk_container_add(GTK_CONTAINER(window),table);
gtk_widget_show(window);
gtk_main();
return 0;
}
GtkWidget* makeTable()
{
GtkWidget *table;
GtkWidget *checkButtons;
GtkWidget *textEntry;
GtkWidget *buttonBox;
/*创建table控件*/
table = gtk_table_new(2,2,FALSE);
gtk_widget_show(table);
/*创建标签和编辑框*/
textEntry = makeTextEntry();
gtk_table_attach(GTK_TABLE(table),textEntry,
0,1,0,1,
GTK_FILL|GTK_EXPAND|GTK_SHRINK,0,
0,0);
gtk_widget_show(textEntry);
/*创建四个check按钮*/
checkButtons = makecheckButtons();
gtk_table_attach(GTK_TABLE(table),checkButtons,
1,2,0,1,
GTK_FILL | GTK_EXPAND,
GTK_FILL | GTK_EXPAND,
10,0);
gtk_widget_show(checkButtons);
/*创建两个按钮*/
buttonBox = makeButtonBox();
gtk_table_attach(GTK_TABLE(table),buttonBox,
0,2,1,2,
GTK_EXPAND|GTK_FILL|GTK_SHRINK,0,
5,10);
gtk_widget_show(buttonBox);
return table;
}
GtkWidget* makeTextEntry()
{
GtkWidget *vbox;
GtkWidget *label;
GtkWidget *text;
vbox = gtk_vbox_new(FALSE,5);
/*生成标签控件*/
label = gtk_label_new("please enter your name:");
gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);
gtk_widget_show(label);
/*生成编辑框*/
text = gtk_entry_new_with_max_length(15);
gtk_box_pack_start(GTK_BOX(vbox),text,FALSE,FALSE,0);
gtk_widget_show(text);
return vbox;
}
GtkWidget* makecheckButtons()
{
GtkWidget *vbox;
GtkWidget *check;
vbox = gtk_vbox_new(FALSE,0);
check = gtk_check_button_new_with_label("apple");
g_signal_connect(GTK_OBJECT(check),"clicked",
GTK_SIGNAL_FUNC(click_button),"apple");
gtk_box_pack_start(GTK_BOX(vbox),check,FALSE,FALSE,0);
gtk_widget_show(check);
check = gtk_check_button_new_with_label("banana");
g_signal_connect(GTK_OBJECT(check),"clicked",
GTK_SIGNAL_FUNC(click_button),"banana");
gtk_box_pack_start(GTK_BOX(vbox),check,FALSE,FALSE,0);
gtk_widget_show(check);
check = gtk_check_button_new_with_label("orange");
g_signal_connect(GTK_OBJECT(check),"clicked",
GTK_SIGNAL_FUNC(click_button),"orange");
gtk_box_pack_start(GTK_BOX(vbox),check,FALSE,FALSE,0);
gtk_widget_show(check);
check = gtk_check_button_new_with_label("pear");
g_signal_connect(GTK_OBJECT(check),"clicked",
GTK_SIGNAL_FUNC(click_button),"pear");
gtk_box_pack_start(GTK_BOX(vbox),check,FALSE,FALSE,0);
gtk_widget_show(check);
return vbox;
}
GtkWidget* makeButtonBox()
{
GtkWidget *hbox;
GtkWidget *button;
hbox = gtk_hbox_new(FALSE,0);
button = gtk_button_new_with_label("yes");
gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,20);
gtk_widget_show(button);
button = gtk_button_new_with_label("no");
gtk_box_pack_start(GTK_BOX(hbox),button,TRUE,TRUE,60);
gtk_widget_show(button);
return hbox;
}
GTK+.rar_gtk
版权申诉
22 浏览量
2022-09-22
17:39:49
上传
评论
收藏 4KB RAR 举报
周楷雯
- 粉丝: 80
- 资源: 1万+
最新资源
- Open3D C++ 系列教程源代码(四)动画 Tick事件
- lab7_02.c
- 基于 SpringCloud 和 Vue3 的OA系统
- 软考高级项目管理师-项目采购管理思维导图
- WordsVector (1).ipynb
- yolov7 车牌检测 车牌识别 中文车牌识别 检测 支持双层车牌 支持12种中文车牌
- 20240429_112025.m4a
- "麦嘟学编程"似乎是一个与编程学习相关的品牌或社区名称,它可能是一个在线教育平台、博客、论坛或社交媒体群组等,旨在帮助人们学习编
- OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,由
- Redis入门基础篇+源码(springboot、maven)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈