网站首页 > 教程文章 正文
在编写代码之前,先初步的认识了解一下什么是GTK+。
GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包。也就是说,它是一个库,它支持创建基于 GUI 的应用程序。可以把GTK+想像成一个工具包,从这个工具包中可以找到用来创建GUI的许多已经准备好的构造块。最初GTK+是作为一个著名的开放源码项目 —— GIMP(GNU Image Manipulation Program)的副产品而创建的,现在已成为一个功能强大、设计灵活的一个通用图形库,是GNU/Linux下开发图形界面的应用程序的主流开发工具之一。GTK+虽然是用C语言写的,但是您可以使用你熟悉的语言来使用GTK+,例如可以用:C++,PHP, Guile,Perl, Python, TOM, Ada95, Objective C等语言来编写自己的GUI应用程序。
如果你在学习完C语言想要摆脱在学习中的黑框框,GTK+是一个很不错的选择。学习起来相对简单,容易上手。在随后的教程中我们使用的是GTK+3.0这个版本来编写我们的界面程序,在Linux系统中GTK+3.0的环境搭建也十分的简单,一条命令即可:
sudo apt-get install libgtk3.0*。
该命令执行完后,可以测试是否安装成功:
pkg-config --cflags --libs gtk+-3.0
安装完成后,我们就可以用几个简短的代码来编写一个带窗口的C语言程序。
/*一个简单的窗口base.c*/
#include <gtk/gtk.h>
int main(int argc, char * argv[])
{
GtkWidget * window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
retrun FALSE;
}
编译代码:gcc -o base base.c `pkg-config --cflags --libs gtk+-3.0`
运行成功,终于可以看到了一个自己编写的带界面的小程序了,虽然它什么也不能做,至少不是一个黑框框了。
下面我们来分析一下上面的代码是什么意思:
1.设置include文件与声明主函数
首先是#include<gtk/gtk.h>语句,这是每个GTK+3.0程序都要包含的头文件。然后是函数声明int main(int argc, char * argv[]),这是标准的c语言主函数的声明。
2.声明变量
GtkWidget * window;声明了窗口控件指针。其中GtkWidget是GTK+3.0控件类型,几乎所有的GTK+3.0控件都是这一类声明;window是一个变量名,当然也可以给它起一个其他的名字,诸如ss这样的名字,不过并不建议这样做,这样只会令代码阅读起来更难,所以最好起一个易于理解的变量名,比如window。
3.初始化GTK+3.0的命令行参数
函数gtk_init(&argc, &argv);初始化命令行参数,这在GTK+3.0程序中是必需的,不管你的设计中是否使用到命令行参数,都需要用这一函数来初始化。
4.创建窗口
代码行window = gtk_window_new(GTK_WINDOW_TOPLEVEL);用来创建窗口。函数gtk_window_new()创建一个窗口并返回这个窗口的控件指针,在这里这个指针的赋值给了变量window;参数GTK_WINDOW_TOPLEVEL指明了窗口的类型为最上层的主窗口,它最常用。当然也可以去取另一个值GTK_WINDOW_POPUP指明窗口的类型是弹出式的无边框的窗口。
5.显示窗口
代码行gtk_widget_show(window);用来显示上一步创建的窗口。函数gtk_widget_show是用来显示控件的,它没有返回类型,参数是要显示的控件指针,在这里是窗口window,所以窗口就显示出来了。
6.主事件循环
最后这个函数gkt_main();是最关键的,它是GTK+3.0的主事件循环,每一个GTK+3.0程序都要有一个,否则程序就无法运行。所谓的事件循环指的是GUI程序运行时等待来自外部用户发出的事件,如键盘按键或者鼠标移动等,GTK+3.0将这些事件包装成信号,用户再根据信号的功能编写相应的回调函数来处理这些事件。在这段代码中并没有写回调函数,所以这只是一个死循环,不做任何反应。
代码最后返回逻辑值FALSE,它相当于整型0。
7.编译运行
gcc -o base base.c `pkg-config --cflags --libs gtk+-3.0`,在终端上输入这么长一串命令非常繁琐而且容易出错,如果长时间不用的话还有可能忘记这串命令。幸好Linux提供了make工具,这样直接编辑好make的配置文件Makefile,在命令行中直接输入命令make就可以编译了,编译结束后输入命令./base就可以运行这个程序了。
在命令行中的`pkg-config --cflags --libs gtk+-3.0`这段命令的意思是向编译器指出了包含文件的路径,动态链接库路径和要链接那些动态链接库。pkg-config是GTK+3.0和GNOME2系统必备的软件包配置和管理工具,可以在命令行中直接运行。
至此,完成了最简单的变量的声明、窗口的创建、显示。了解GTK+3.0程序的一般结构、GTK+3.0程序中的两个关键步骤:gtk_init和gtk_main。这些都是GTK+3.0程序必备的,为下面进一步学习GTK+3.0编程打下基础。
猜你喜欢
- 2024-12-05 SM新女团AI撞脸Lisa,出道物料被锤抄袭,改玩拿来主义?
- 2024-12-05 Android之自定义ListView(一)
- 2024-12-05 你知道iframe与frame的区别吗,最全面的解释来了
- 2024-12-05 大厂社招:Android 高级工程师的面试题,你知道多少?
- 2024-12-05 C# Windows Api User32.dll窗体和消息动态库详解
- 2024-12-05 Android通用Dialog的封装
- 2024-12-05 Android 开发,怎样快速搭建一个项目?
- 2024-12-05 Android 开发常用框架
- 2024-12-05 电气自动化专业词汇中英文对照表
- 2024-12-05 Chrome插件从零开始开发指南(一)完成一个基础示例工程
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)