打印

学习Linux操作系统下GTK界面编程

[复制链接]
1760|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunplusedu2012a|  楼主 | 2013-1-23 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  今天,开始在工作之余,抽出时间来学习linux界面编程。我计划在未来的半年内,学会 linux下的GTK+界面编程。这个文档作为我学习linux编程的第一个文档,我会尽量做的详细一点。我所用的linux版本是Red Hat 9.0。
  第一个程序——Hello,World
  在开始写第一个程序之前,需要做一点基本操作。
  我登陆linux使用的是root用户(根用户,也叫超级用户)。所以,所有笔记中产生的截图,均是root用户下的。
  一、在linux桌面点击右键,在快捷菜单中选择新建终端选项,打开类似DOS的窗口。
  二、使用mkdir命令创建一个文件夹,文件夹命名为gtkgui,命令输入为:mkdir gtkgui
  输入完毕后敲回车键即可创建目录gtkgui,需要注意的是该目录的路径是:/root/gtktui
  三、使用cd命令进入目录gtkgui       命令输入:cd gtkgui
  输入命令后敲回车键即可进入目录gtkgui
  四、创建第一个程序存放的目录,和第一步一样,这次在gtkgui目录下创建一个子目录1gui 然后进入1gui目录。创建目录命令:mkdir1gui   进入目录命令:cd lgui 命令界面输入。
  (注意1gui第一个字符是,不是小写的L)。
  小提示:若你想查看当前目录的绝对路径。可以在终端敲入命令:pwd
  现在可以清楚的看到当前工作目录是/root/gtkgui/1gui
  五、编写代码,在开始写第一个程序之前,说说VI编辑器。假设要写的程序是firstgui.c,则在终端中敲入vi firstgui.c   然后回车,就进入编辑文件firstgui.c状态了,VI命令后面的文件若存在,则直接打开,若不存在,则新建一个。进入文件编辑状态后,必须按a键,才可向文件输入东西,当编辑完后,按esc键退出编辑模式,再按shift+;键,最后输入wq(write and quit)退出 VI。好了,在写程序中,再说一遍就记住了。
  1、 创建 firstgui.c并编辑它
  命令:vi first.c  然后敲回车进入编辑模式
  必须先按下 a 键(还有其他的键也可(如i键),不过我觉得按下a键比较方便)才可输入字符,现在按一下a键,终端变成图1.8所示的效果。
  按一下a键后(注意左下方有个--插入--),进入编辑模式
  现在开始输入第一个程序的代码,代码原型如下:
  #include  <gtk/gtk.h>
  int main(int argc,char*argv[])
  {
  GtkWidget *window;
  gtk_init(&argc,&argv);
  window=gtk_window_new(GKT_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(window),Hello,World);
  gtk_widget_show(window);
  gtk_main();
  return 0;
  }
  现在代码输入完毕,需要保存文件并推出编辑器,先按一下esc键退出编辑模式,然后按组合键:shift+;键最后输入wq并敲回车键就保存了文件并退出编辑模式了。退出VI后的界面如图1.20所示。
  使用ll命令(小写的LL)查看刚才编写的firstgui.c是否存在。
  若想看文件内容,使用cat firstgui.c 命令就可看到文件firstgui.c的内容了。
  六、编译代码
  在终端敲入下列命令及参数,编译连接程序
  命令及参数:gcc firstgui.c -o firstgui `pkg-config--cflags --libs gtk+-2.0`
  命令说明:    gcc 编译命令
  firstgui.c 源程序文件名
  -o 编译参数,(不是0(零),是opq的o)
  firstgui 编译连接后的可执行文件名,可以为任意合法的文件名
  `   这个符号是和~呆在一起的那个键上,不要误认为是单引号
  pkg后面与-config之间没有空格
  cflags 前面是两个短线 --
  libs前面也是两个短线 --
  七、运行程序
  键入 ./firstgui 后回车便可看到效果了。
  需要注意的是,该程序当你点击窗口右上角上的小X关闭窗口时,窗口倒是关闭了。但是程序还在运行,你必须在终端下按组合键:Ctrl+c来关闭进程。
  八、程序分析
  GtkWidget *window; 相当于Windows下的
  WNDCLASS
  结构体,不过window在此只是一个窗口指针,用于指向函数gtk_window_new()函数返回的窗口地址而已。
  gtk_init(&argc,&argv);
  初始化界面库等一系列操作的函数,当其调用失败时,其将终止我们的程序,目前只要记住在编写任何窗口函数之前,都保证该函数是第一个被调用的就行了。
  window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
  该函数创建一个新的GtkWidget对象(目前我认为其就是创建了一个还没有显示的窗 口),并返回该对象的指针。该函数参数仅有两个,其中一个是上面的GTK_WINDOW_TOPLEVEL,表示创建一个主窗口,另一个则是 GTK_WINDOW_POPUP,表示创建一个弹出窗口。
  gtk_window_set_title(GTK_WINDOW(window),Hello,World);该函数设置窗口的标题。
  gtk_widget_show(window); 该函数将窗口显示出来。
  gtk_main();该函数捕获一些消息吧。在没有调用函数gtk_main_quit()函数之前,即使你关闭窗口,进程也不关闭的原因就在此。
  八、总结
  创建窗口主要步骤:
  1、GtkWidget *window;
  2、gtk_init(&argc,&argv);
  3、windows=gtk_window_new(GTK_WINDOW_TOPLEVEL);
  4、gtk_widget_show(window);
  5、gtk_main();
  最后,注意编译命令。后面的那些参数。
  目前,X窗口(Xwindow)和GNU编译系统已成为应用linux或unix操作系统的计算机工作站和大型计算机上最主要的图形用户界面系统。而GTK正是两者结合的编程开发包,它比以往用的Xwindow/Motif编程更为简单方便,功能也很强大。所以,我想会有着较好的应用前景。这是我的心得体会,希望能够对大家有所帮助!给大家推荐一个很好的linux学习论坛:http://bbs.sunplusedu.com,值得收藏!

相关帖子

沙发
cooran| | 2013-1-24 14:31 | 只看该作者
感谢楼主分享@

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我很懒,什么也没有留下

49

主题

78

帖子

1

粉丝