资源描述:
《linux下的gtk图形界面编程 .》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Linux下的GTK图形界面编程.(中国人民解放军信息工程大学)苏洁王京林周东方【摘要】本文介绍了LINUX平台下的xptoolkit)是一个图形用户编程的接口工具。它注册完全免费,所以用来开发自由软件或商业软件都不需要花费什么。现在很多linux集成系统都已经将gtk1.2版本打包进去了。包括redhatlinux6.0以上版本,还有中文化的turbolinux等等。它也越来越被普遍的应用于unix系统编程。还有一个组件叫glib,它包含了一些标准应用的新扩展用来提高gtk的兼容性。用于linux系统的某些函数可能不适合标准的unix系统
2、,例如g_strerror()函数等等。某些函数也扩展了gnuc的一般功能,例如g_malloc函数就有自己加强的调试功能。gtk可以与多种语言绑定,包括c++,guile,perl,python,ton,ada95,objectivec,freepascal,eiffel。用标准c开发的程序,编译软件可用gnu并附带上gtk选项即可。想用除了标准c以外的其它语言来开发xain(intargc,char*argv[]){gtkp;argc,argv);/*初始化显示环境*/ain();/*进入睡眠状态,等待事件激活*/return(0);}
3、从上面的程序可以看出,gtk是一个事件驱动工具包,当它运行到gtk_main()函数时会自动睡眠,直到有事件发生,控制权转让给相应的函数调用,在该函数中可以用标准c写出相应的事物逻辑。这与e,gtksignalfunccallback_func,gpointerfunc_data);返回值是一个区分同一对象中的事件与不同回调函数的关联标签。这样可以做到一个对象的一个信号就有任意多个回调函数,并且每一个都会按照声明的顺序执行。函数调用的第一个参数是产生信号的e则是希望捕获的信号或事件的名称,callback_func则是事件发生后所调用的回调
4、函数名称,而第四个参数func_data则是传递给回调函数的参数。回调函数要定义在主程序的前面,它们的一般格式都如下所示:voidcallback_func(gtkogeneous,gintspacing);参数homogeneous是用来控制是否盒子中的每个组件都有同样的大小(例如水平盒子中的控件有同样的宽度,垂直盒子中的控件有同样的高度)。spacing参数是组件之间的间隔。垂直盒子的创建函数是gtk_vbox_nens,ginthomogeneous);第一个参数,显而易见,是表格的行数。后面的参数则是表格的列数。homogeneou
5、s参数则是用来安排表格间隔大小。如果它取true,则表格中每个小格的大小用表格中最大组件的大小来设置的,所有的小格大小都是一样的。如果homogeneous参数取false的,每个小格的大小都用同行中最高组件的高度,同列中最宽组件的宽度。将一个_attach,gintxoptions,gintyoptions,gintxpadding,gintypadding);left_attach参数和right_attach参数将指出在哪儿放置组件,以及用了多少盒子。如果你想在两行两列的表格中的右下小格中加入一个按钮,并且想让按钮充满那个小格,则参数
6、可以选择left_attach=1,right_attach=2,top_attach=1,bottom_attach=2。其实left_attach也就是组件所在小格的左边框是表格的第几条边数,其它依此类推。参数xoptions和yoptions是用来确定打包选项的,可以用or来选择多个选项。调节器gtk有很多组件可以用鼠标或键盘来调整,例如范围组件(rangeentclass结构中该信号的定义:void(*value_changed)(gtkadjustment*adjustment);不同的可调整组件都用一个调节器时,任何一个组件发生
7、调整变化都会产生该信号。有两种情况会导致这个现象的发生。第一种情况是用户在用鼠标或键盘调整该组件(例如拉滚动条),或者直接在程序中用gtk_adjustment_set_value()函数来改变调节器中的value值。当调节器的upper参数和loent*adjustment);范围组件将该信号与一个信号处理器相关联,并随时在面板上反映参数的变化。举个例子,滚动条中滑动键的大小与调节器中upper,loit_by_name(gtk_object(adjustment),"changed");创建组件小结从上面可看出,创建一个y_prog.c
8、–omy_prog.o–lgtk–lgdk↙完成后在xy_prog.o程序即可。目前x窗口(xotif编程更为简单方便,功能也很强大,有着较好的应用前景。目前上已经有很多利用该软