最近在开发C语言,要用到图形界面gtk+,图形界面很多的有qt,opengl,3ds。C语言适合与gtk+,功能很强大。linux大名顶顶的gnome和firfox都是gtk+开发的。网上有很多教程,可是时间有点太早了,按教程做没做出来,有很多疑惑的地方。
准备:codeblocks13.12、gtk+2.24、glade3
这里说明一下:我的是64 位系统,可是gtk+要用32位的,如果你用64位gtk+可能会出现
undefined reference to `gtk_init'
undefined reference to `gtk_window_new'
undefined reference to `gtk_widget_show'
undefined reference to `gtk_main'
这样类似的错误,你可以把它换成32位的试一下。
1、安装codeblocks就不解释了,下载.exe文件直接安装就行了。
2、gtk+下载32位的,你也可以试一下64位的,不行再换。gtk3现在还不支持,最好用gtk+2,网上说也行你也可以试一下。网上说要要配置环境变量path添加路径,可加可不加。要是你用到命令行,就添加。我这里没添加。把它随便放一个地方,在codeblocks创建gtk工程时要选择gtk文件路径,这里也说明了不用添加path环境变量。
3、glade3下载直接安装,不解释了。
开始:codeblocks中创建gtk+项目。
创建好后,项目中会自动添加一个main.c文件,里面有个示例代码,你可以直接运行查看结果。如果有上面说的错误,就换成gtk32位的。网上也有说要在codeblocks中配置settings中global variables。我其实没配置也可以得。
为什么要用到glade3?它相当于android开发的xml文件,android开发中ui可以java编写,也可以用xml配置。一个控件用代码写很麻烦,初学者不适合,那就可以直接用glade3,你安装后可以发现控件别人帮你写好了,直接用就行了。
安装好后,直接打开。有glade3教程,有20多页你可以大概读一下。添加一个window,空间在toplevel中。
这里注意一下,窗口的名字是window1,默认的。后面要用到。
保存一下myapp.glade.后缀名是glade其实就是xml文件。格式有两种gtkbuilder和libglade。libglade逐渐被淘汰。
下面怎么在codeblocks中利用刚才建好的myapp.glade文件。写一个下代码测试。
#include <gtk/gtk.h> void on_window_destroy (GtkObject *object, gpointer user_data) { gtk_main_quit(); } int main (int argc, char *argv[]) { GtkBuilder *builder; GtkWidget *window1; gtk_init (&argc, &argv); builder = gtk_builder_new (); gtk_builder_add_from_file (builder, "myapp.glade", NULL); window1 = GTK_WIDGET (gtk_builder_get_object (builder, "window1")); gtk_builder_connect_signals (builder, NULL); g_object_unref (G_OBJECT (builder)); gtk_widget_show (window1); gtk_main (); return 0; }myapp.glade要放在codeblocks创建的工程中和main.c在同一个文件夹下。如果这里提示:
Gtk-CRITICAL **: IA__gtk_widget_show: assertion `GTK_IS_WIDGET (widget)' failed。
可能是你编写的glade文件找不到,或者控件没有。你可以下一下这里写的
http://blog.csdn.net/attilax/article/details/12297579
注意代码中的window1和glade文件中的window1是对应的。