GTK+实验
2015-06-01 00:08
246 查看
题目名称 GTK+实验
题目关键字 GTK+实验
题目录入时间 2015-5-24 13:47:12
题目内容
GTK+实验,完成课本实验9,最后打包上传(程序源代码+可运行文件)
callbacks.c Glade生成的大部分空的回调函数所在的文件,你自己往里面添加代码
callbacks.h (头文件)Glade生成的回调函数的定义文件
main.c 主函数
support.h (头文件)支持文件
在galde生成的devcpp目录里有2个文件
config.h Glade 生成的配置文件
gtk1.dev Glade生成的devcpp工程文件(就是你保存时启的那个名子)。
需要你自己编写代码的文件只有三个(其它文件不要动),它们是:
main.c (一般只需做少量的修改)
callbacks.h (一般只需做少量的修改,甚至不作修改)
callbacks.c (函数的具体实现部分,你需要在这里编写一定量的代码)
一、用glade设计界面
1、新建glade工程
2、放置各种构件:新建window构件(window1),在window1上放置固定容器构件(fixed positions),在固定容器构件上放置文本输入构件(entry1)。
3、为文本输入构件entry1添加changed信号响应(其它程序设计语言中为事件响应)on_entry1_changed,一定注意在signals选项卡中把object设置为entry1。
4、单击Build按钮生成源代码。
二、添加代码
只需在callbacks.c中添加三行代码
三、运行程序
编译、运行程序,在文本输入框内随变输入几个英文字母,看看运行效果。
注:在linux下,操作很简单,点击 glade 的 build 就会自动产生代码,然后运行改目录下的autogen.sh运行make ,就会在
src 目录下产生可执行的程序
题目关键字 GTK+实验
题目录入时间 2015-5-24 13:47:12
题目内容
GTK+实验,完成课本实验9,最后打包上传(程序源代码+可运行文件)
简单了解一下glade生成源文件
在glade的源文件目录src下有7个代码文件,它们分别是:callbacks.c Glade生成的大部分空的回调函数所在的文件,你自己往里面添加代码
callbacks.h (头文件)Glade生成的回调函数的定义文件
main.c 主函数
support.h (头文件)支持文件
在galde生成的devcpp目录里有2个文件
config.h Glade 生成的配置文件
gtk1.dev Glade生成的devcpp工程文件(就是你保存时启的那个名子)。
需要你自己编写代码的文件只有三个(其它文件不要动),它们是:
main.c (一般只需做少量的修改)
callbacks.h (一般只需做少量的修改,甚至不作修改)
callbacks.c (函数的具体实现部分,你需要在这里编写一定量的代码)
// 简单了解一下glade生成的界面文件interface.c GtkWidget* create_window1 (void) { GtkWidget *window1; /*定义一个窗口构件*/ GtkWidget *fixed1; /*定义一个固定容器构件,用于放置其它构件*/ GtkWidget *label1; /*定义一个标签构件*/ window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); /*新建一个窗口*/ gtk_window_set_title (GTK_WINDOW (window1), _("window1")); /*设置窗口的标题*/ gtk_window_set_default_size (GTK_WINDOW (window1), 400, 300); /*设置窗口的默认大小为400,300*/ fixed1 = gtk_fixed_new (); /*新建一个固定容器*/ gtk_widget_show (fixed1); /*显示固定容器*/ gtk_container_add (GTK_CONTAINER (window1), fixed1); /*添加固定容器到窗口*/ label1 = gtk_label_new (_("/346/254/242/350/277/216/350/265/260/350/277/233GTK/347/232/204/344/270/226/347/225/214")); /*新建一个标签*/ gtk_widget_show (label1); /*显示标签*/ gtk_fixed_put (GTK_FIXED (fixed1), label1, 120, 72); /*把标签添加到固定容器中*/ gtk_widget_set_size_request (label1, 136, 40); /*设置标签的大小*/ /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1"); GLADE_HOOKUP_OBJECT (window1, fixed1, "fixed1"); GLADE_HOOKUP_OBJECT (window1, label1, "label1"); return window1; } /* (点评:版本不一样,里面的代码可能有一些不同) (这部分内容,能理解多少,理解多少,看不懂也不要紧。) 文件:main.c 只作部分解释,以后你水平高了,慢慢看吧! 以下代码节选自main.c */ int main (int argc, char *argv[]) { GtkWidget *window1; /*定义window1构件*/ gchar *pixmap_dir; #ifdef G_OS_WIN32 package_prefix = g_win32_get_package_installation_directory (NULL, NULL); package_data_dir = g_build_filename (package_prefix, "share", NULL); package_locale_dir = g_build_filename (package_prefix, "share", "locale", NULL); #endif #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, package_locale_dir); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif gtk_set_locale (); /*通过调用这个函数才可显示中文*/ gtk_init (&argc, &argv); /*GTK初始化*/ pixmap_dir = g_build_filename (package_data_dir, PACKAGE, "pixmaps", NULL); add_pixmap_directory (pixmap_dir); g_free (pixmap_dir); /* * The following code was added by Glade to create one of each component * (except popup menus), just so that you see something after building * the project. Delete any components that you don't want shown initially. */ window1 = create_window1 (); /*创建window1构件*/ gtk_widget_show (window1); /**显示window1构件/ g_signal_connect ((gpointer) window1, "destroy", G_CALLBACK(gtk_main_quit), NULL); /*为window1构件的“destroy”事件,关联函数, 也就是当单击window1的关闭按钮时,关闭window1,同时退出gtk*/ gtk_main (); /*gtk主程序开始执行*/ #ifdef G_OS_WIN32 g_free (package_prefix); g_free (package_data_dir); g_free (package_locale_dir); #endif return 0; }
通过一个例子来说明文本输入构件(text entry)的使用。
文本输入构件 (二)一、用glade设计界面
1、新建glade工程
2、放置各种构件:新建window构件(window1),在window1上放置固定容器构件(fixed positions),在固定容器构件上放置文本输入构件(entry1)。
3、为文本输入构件entry1添加changed信号响应(其它程序设计语言中为事件响应)on_entry1_changed,一定注意在signals选项卡中把object设置为entry1。
4、单击Build按钮生成源代码。
二、添加代码
只需在callbacks.c中添加三行代码
//Callbacks.c void on_entry1_changed(GtkEditable *editable, gpointer user_data) { const gchar *text1; text1 = gtk_entry_get_text(GTK_ENTRY(editable)); printf("text entry : %s/n",text1); }
三、运行程序
编译、运行程序,在文本输入框内随变输入几个英文字母,看看运行效果。
注:在linux下,操作很简单,点击 glade 的 build 就会自动产生代码,然后运行改目录下的autogen.sh运行make ,就会在
src 目录下产生可执行的程序
调用glade的界面
Gtk+/Glade编程(二)–入门builder = gtk_builder_new(); gtk_builder_add_from_file(builder, "dec_inc.glade", NULL); window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));
懒人写法
window1 = create_window1 (); entry1 = lookup_widget(GTK_WIDGET(window1), "entry1"); entry3 = lookup_widget(GTK_WIDGET(window1), "entry3"); button1 = lookup_widget(GTK_WIDGET(window1), "button1"); button2 = lookup_widget(GTK_WIDGET(window1), "button2"); g_signal_connect(GTK_OBJECT(window1),"destroy",GTK_SIGNAL_FUNC(closeApp),NULL); g_signal_connect(GTK_OBJECT(button1),"clicked",GTK_SIGNAL_FUNC(button1_clicked),(gpointer)entry1); g_signal_connect(GTK_OBJECT(button2),"clicked",GTK_SIGNAL_FUNC(button2_clicked),(gpointer)entry3); gtk_widget_show (window1);
相关文章推荐
- 熬粥记:煮一碗红豆粥,3次才领悟煮粥大法
- PullToRefresh使用详解(三)--实现异步加载的下拉刷新列表
- 熬粥记:煮一碗红豆粥,3次才领悟煮粥大法
- UICollectionView基础
- Sicily 13981 Cow Baseball
- linux下arm驱动开发环境配置
- [Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析
- sicily 1214 二进制回文数的证明
- Poker Face
- hdu 1565 最大点权独立集
- 通过Tabs方法基于easyUI+bootstrap制作工作站
- cocos2d-x-3.4 无法打开包含文件extensions/ExtensionExport.h
- java算法导论之FloydWarshall算法实现代码
- 【简书交友】希望相互阅读
- Java中使用HttpRequest获取用户真实IP地址
- wxPython中listbox用法实例详解
- python实现图片变亮或者变暗的方法
- python使用Image处理图片常用技巧分析
- Python运算符重载用法实例分析
- Python获取运行目录与当前脚本目录的方法