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

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45856685 GTK+,或者是叫做GIMP工具组件,是一套创建图形用户接口的多平台组件.
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45856685

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`

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

目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 搜索推荐
技术革新下的培训新趋势:案例解析
从最初的“试试看”,到如今的“非做不可”,企业培训已经成为央国企和上市公司不可或缺的战略环节。无论是AI与大模型的赋能,DeepSeek,还是具身智能、智算技术和数据科学的实战应用,这些课程都在为企业打开新的可能性。
|
安全 Java 测试技术
淘宝API接口测试全攻略
淘宝提供丰富的API接口以促进与平台的数据交互和功能开发。为确保稳定性和安全性,API接口测试至关重要。测试前需熟悉API文档、选配工具(如Postman、JUnit、Selenium)并在独立环境中进行。测试包括端到端、单元及集成测试,并需关注安全问题和正确的数据传输格式。通过有效测试可提升API质量与用户体验。
|
消息中间件 存储 Java
Kafka 如何避免重复消费?
在Apache Kafka中,避免消息的重复消费是确保数据准确处理的关键。本文详细介绍了七种避免重复消费的方法:使用消费者组、幂等生产者、事务性生产者与消费者、手动提交偏移量、外部存储管理偏移量、去重逻辑及幂等消息处理逻辑。每种方法均有其优缺点,可根据实际需求选择合适方案。结合消费者组、手动提交偏移量和幂等处理逻辑通常是有效策略,而对于高一致性要求,则可考虑使用事务性消息。
1986 0
linux 手动编译安装 pkg-config 步骤
linux 手动编译安装 pkg-config 步骤
|
存储 Shell Python
Using colcon to build packages:使用colcon来构建软件包
Using colcon to build packages:使用colcon来构建软件包
797 0
|
移动开发 人工智能 前端开发
Walker充电桩物联网云平台 3.1
简介: Walker充电桩物联网云平台包括了公众号、H5、采集Server、后端平台,实现平台闭环,平台目前已经多次用于商业,完全采用Springboot、mysql、Netty、微信支付、微信退款等技术栈、欢迎微信交流18318281197
Walker充电桩物联网云平台 3.1
|
前端开发 Java 数据管理
毕业设计:基于Springboot实现求职招聘,校园招聘系统
 本项目基于Springboot 开发实现了一个求职招聘网站,系统分为前端求职招聘和后台数据管理后台。主要分为四个角以:管理员,求职者,公司管理员,公司HR,不同的角色进入系统有不同的功能操作。用户身份可以在后台管理设定。系统功能完整,界面美观大方,适合做毕业设计使用。 运行环境: 开发工具:IDEA或ECLIPSE 数据库:MYSQL+REDIS 开发技术:Springboot+mybatis+mybatisPlus+shiro 前端开发:AJAX+Jquery+layui 2.1 功能需求 2.1.1 系统划分
1076 0
毕业设计:基于Springboot实现求职招聘,校园招聘系统
|
运维 Cloud Native 前端开发
BizWorks云原生数字工作台,助力企业数字化转型
BizWorks 是面向云原生应用构建和运营的一体化技术平台,内置了阿里巴巴在业务中台领域的最佳技术实践,致力于成为企业数字化转型的新基座。
2511 1
BizWorks云原生数字工作台,助力企业数字化转型
|
存储 分布式计算 监控
【Hadoop技术栈篇】认识Hadoop,起源和发展
Hadoop是Apache旗下的一个用java语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台。允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。
686 0
【Hadoop技术栈篇】认识Hadoop,起源和发展
|
SQL 机器学习/深度学习 运维
对话|DAS的数据库自治技术解读
《数据库风向标》是一档聚焦数据库新趋势与新技术的视频栏目,节目每期会请到几位资深技术大咖,与大家共话数据库热点话题。
对话|DAS的数据库自治技术解读