GTK+初识---高大上的图形接口

GTK+,或者是叫做GIMP工具组件,是一套创建图形用户接口的多平台组件.GTK+提供了一套完整的组件集,同时他不仅仅适用于小型工具开发,同样也适用于一个完整的项目套件.

像我们熟悉的gnome桌面,各个系统平台上的GIMP图像处理软件,VMWare工作站,以及OS X和Windows vista上的gedit文本编辑器等都是使用GTK创建的.

GTK+是使用C语言写的,但是已经被设计成支持多语言的框架了,例如在Perl和python等中使用GTK+可以快速的创建桌面应用程序.同时,他是使用GObject来实现的,GObject是一个为C所开发的一个面向对象的框架,所以GTK+也是支持面向对象编程的.GTK+是事件驱动的.这套组建对于事件的监听例如对一个按钮的点击,会将事件传递到你的应用程序中去响应.

下面我们搭建一下我们的开发环境:

首先我们需要了解的是,GTK+自身是依赖于下面的库的:

?1:Glib
?2:pangp
?3:ATK
?4:GDK
?5:GdkPixbuf
?6:Cairo

下面我们一一了解一下这些函数库:

Glib是一个常用的工具函数库.他提供了一些数据类型,字符串工具,错误通知,消息队列和线程.pango是一种函数库,用来实现国际化和本地化的功能.ATK是一种工具函数包,她提供了创建快捷键的功能.GDK是一种函数库,他为整个GTK+函数图形系统提供了一些底层的”图形实现”和”窗口实现”的方法.GDKPixbuf函数库用于加载图像和维护图像”缓存”. Cairo是用于制作二维图像的函数库.

首先我们需要在我们的ubuntu系统中安装GTK+函数库:

sudo apt-get install gtk2 gtk2-devel gtk2-devel-docs

其次,我们需要知道,当我们写完我们的程序之后,应该如何编译我们的程序,那肯定好说,直接使用gcc来编译就行了.是的,是使用gcc来进行编译,但是编译的过程中所需要的函数库的位置我们应该如何指定呢?下面就会使用到我们的一款工具”pkg-config”,该工具可以提供各种安装函数库的位置.假如我们要编译我们的hello.c程序,我们就需要这样写:

gcc -o hello hello.c `pkg-config --libs --cflags gtk+2.0`

注意,最后使用的是反引用号将pkg-config引起的,反引用号就是你的键盘上的在数字”1”左面的那个按键.下面我们来写一个hello World程序:

hello.c

#include <gtk/gtk.h>

/*
 * 最简单的GTK桌面程序
 * 仅仅就是生成一个窗口的小小程序
 */
int main(int argc,char *argv[]){

    GtkWidget *window;  //
    gtk_init(&argc,&argv);  // 初始化整个GTK+程序,是每一个GTK+程序必不可少的部分

    /*
     * 生成一个构件 -- GtkWindow,这个窗体的种类
     * 是GTK_WINDOW_TOPLEVEL,toplevel窗口拥有一个
     * 标题栏和边框
     */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(window);    //必不可少的,显示构件

    gtk_main();     //进入主循环,等待事件的发生

    return 0;
}

下面我们使用下面的代码来进行编译:

gcc -o hello helloc. `pkg-config --libs --cflags gtk+2.0`

下面就是运行之后的结果:

时间: 2024-10-07 14:40:45

GTK+初识---高大上的图形接口的相关文章

cairo与windows图形接口

1.   简介 Linux的两大流行桌面环境KDE和Gnome,其对应的基础组件QT和GTK+,GTK+的底层图形绘制用的就是cairo.cairo (http://cairographics.org)是开源矢量图形库支持多种输出,cairo由c语言编写模块化设计得很出色,这里分享(非教程)cairo的windows移植定制(VS2012编译),及跟windows的图形接口DXGI对接,通过DXGI来渲染显示cairo产生的图像帧. 2.   cairo 图形库 cairo是个不小的工程,多少行

初识Django —Python API接口编程入门

初识Django -Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言,基于Django框架,利用MVC模型,实现后台方面的针对数据库的API开发.先了解一下互联网的WEB架构, 如上图: 互联网的WEB架构大致分为三层,web层.app层和数据库层.Web层:如apache网站服务器:app层主要是应用业务:DB指后台数据库.随着互联网的高速发展,网站访问量的增长.数

PPAPI中使用Chromium的3D图形接口

使用PPAPI的Graphics 3D接口做了一个小示例,鼠标点击插件区域,绘制颜色,效果与ppapi_simple类似. foruok原创,如需转载请关注foruok的微信订阅号"程序视界"联系foruok. 项目 项目与VS2013编译最简单的PPAPI插件这篇文章里说的ppapi_simple类似. 附加包含路径有些不同,如下: E:\sources\CEF\2526\chromium\src\ E:\sources\CEF\2526\chromium\src\ppapi\lib

最常用的图形接口:VNC

若要安装VNC,首先有两个软件包需要安装.一个是客户端的服务,一个是服务器端的服务. 下面就开始操作吧!切记,我下面的这些步骤缺一不可,我是经常多次测试的! ① 安装服务器端的VNC软件包 ② 安装客户端的VNC软件包 ③ 安装图形界面软件包 ④ 修改/etc/sysconfig/vncservers配置文件(另外一种方法就是直接vncserver:端口) 在配置文件最后加入下面这句话 ⑤ 修改vi /root/.vnc/xstartup配置文件 注释下图中红框中的内容,并在后面添加蓝框中的内容

初识PHP抽象类和接口

抽象类(abstract) 任何一个类,如果类的内部至少有一个方法是被声明为抽象的(abstract),那么这个类就必须被声明为抽象的,抽象类中被定义为抽象的方法只有声明调用方式,而不能具体的实现,而抽象类中的普通的方法是可有具体实现的.抽象类不能被直接实例化,只能被继承(extends),继承一个抽象类的时候,子类必须要实现父类中所有的抽象方法(且方法的参数数量和参数的数据类型也要保持一致),并且这些方法的访问控制只能和父类中的访问控制一样(方法不能为private),或者更为宽松(publi

图形开发接接口与事件

在与电脑进行交互时一般采用命令接口如Windows 命令处理程序(cmd)或图形接口windows操作系统上的对电脑进行操作的图标:而几乎所有的人使用者的程序的操作都依赖于图形接口. 在java中有一套用于图形开发的开发包分别位于几个包内:java.awt包 ,javax.swing包.这两个包均是jdk开发包下的组件.其中常用的组件大致有3类1.容器组件类:用于向其他组件提供容器,如用户常见到的窗口就是一个容器这个组件在javax swing包中的类为JFrame.在窗口之中我们常见到其他组件

接口与事件之图形界面的认证登录

概念的介绍: 1.接口的定义 定义接口的关键字:interface 格式: public interface 接口名 extends 接口,... { //定义常量(常量名必须全部大写) public static final 数据类型 常量名 = 值; //定义抽象方法 public abstract 返回值类型 方法名(数据类型 参数名,...); } 注意: 1.接口只有一个访问修饰符public. 2.接口会默认提供的关键字有:public.static.final.abstract 3

C语言基于GTK+Libvlc实现的简易视频播放器

小编心语:现下,各种视频播放软件层出不穷,竞争也越演越烈,不知道大家有木有这个想法,小编有时在想能不能做一款属于自己的视频播放器呢~小编特意去实验楼,整理出了这篇关于如何实现简易视频播放器的博文.简易播放器,你值得拥有~ 友情提示:这里只是前篇,只是一些简单的功能,其他功能将会在后篇为大家介绍-- C语言基于GTK+Libvlc实现的简易视频播放器 一.课程说明 如果你学习过之前上线的pygtk实现有道词典的项目课,那应该对gtk的使用有一些了解了,这个项目课学起来会相对轻松一些. 关于Gtk或

GTK+支持库及GLib

GTK+及其支持库: GTK+依赖许多函数库.每个库都给图形应用的开发者一个专门的函数类.GTK+是用C语言编写的面向对象的应用编程接口(API).它是运用类的概念构建于自身之上的可扩展系统.面向对象的框架最初是作为GTK+函数库的一部分,但是后来从GTK+库中分离出去加入了GLib作为一个叫GObject的独立支持库.GObject保证了能用C进行完整的面向对象开发,包括对象的继承,数据隐藏等等. 因为能从其他函数库大量调用函数,GTK+的库就能够专注于构建图形界面的需求.GTK+自身的构件包