1.gtk简介 gtk(gimp toolkit)是一套源码以lgpl许可协议分发、跨平台的图形工具包。最初是为gimp写的,已成为一个功能强大、设计灵活的一个通用图形库,是gnu/linux下开发图形界面的应用程序的主流开发工具之一。当然,gtk也是支持跨平台的,支持unix类的系统、windows,甚至手机平台。
gtk是使用c语言写的,所以其原生api都是面向c的,同时gtk的一大特点是,在c语言层面实现了面向对象的特性。gtk是完全免费的,而且基于lgpl协议,这可以保证私有软件通过链接使用gtk可以不把软件源代码开放,对商业应用较友好,这跟gpl协议是不一样的。也正是lgpl协议,使得早些年gnome(基于gtk编写)风头胜过kde(基于qt编写)。
gtk+ 从目前的发展趋势来看,越来越成为 linux 和 gnome 的 native toolkit,对于跨平台的考虑越来越少了。gnome 目前仍是 linux 平台最主流的桌面系统,而像 pantheon、cinnamon 等桌面也只是 gnome 换了个壳,底层也是 gnome 技术栈,所以 gtk+ 在这方面仍会大有发展。
2.gtk和gtk+ 上面只是说了gtk,但我要学习的是gtk+。它们之间有什么关系呢?gtk+的作者之一pertermattis说他原来开发的gtk包含了三套函数库, libglib、libgdk,和 libgtk,这些库没有采用面向对象机制,因而无法实现构件的复用,而且消息机制是使用标准的回调机制实现的,而非现在的gtk+所提供的信号机制。“+”是用来区分原始版本和新版本的。gtk+依然是完全使用c语言开发的,但在设计上灵活运用了面向对象设计(ood)思想(谁说只有c++、java、c#这样的语言可以ood 呢)。
3.linux下第一个gtk程序 3.1 查看系统是否安装了gtk pkg-config命令可查看安装库的详细信息。
$ pkg-config --list-all | grep gtkgtk-sharp-3.0 gtk - gtkgtk+-unix-print-2.0 gtk+ - gtk+ unix print supportgtk+-x11-2.0 gtk+ - gtk+ graphical ui library (x11 target)gtk+-2.0 gtk+ - gtk+ graphical ui library (x11 target) 若没有gtk,则在线安装
sudo apt-get install libgtk2.0-dev 3.2 第一个gtk程序示例#include int main(int argc,char *argv[]){ /* gtkwidget 是构件的存储类型 */ gtkwidget *window; /*每一个gtk程序都要调用*/ gtk_init(&argc, &argv); /*创建一个新的窗口*/ window= gtk_window_new(gtk_window_toplevel); /*设置窗口标题*/ gtk_window_set_title(gtk_window(window),gtk hello); /*设置窗口大小*/ gtk_widget_set_usize(window, 200, 200); /*显示窗口*/ gtk_widget_show_all (window); /*所有的 gtk 程序必须有一个 gtk_main() 函数。 程序运行停在这里等待事件 (如键盘事件或鼠标事件) 的发生。 */ gtk_main(); return 0;} 程序编译:gcc main.c `pkg-config --cflags --libs gtk+-2.0` 编译参数:
pkg-config --cflags gtk±2.0 列出include 目录,pkg-config --libs gtk±2.0列出编译连接库,也可以合在一起,像这样:pkg-config --cflags --libs gtk±2.0。
这里使用了“命令替换”。 命令替换(commandsubstitution)使得可以捕获一个命令的输出而在另一个命令中替换它。这个单引号不是回车键左边的那个,而是 esc 键下面的那个。
连接时常用的库:• gtk 库(-lgtk),构件库,基于gdk。• gdk 库(-lgdk),xlib库的封装(wrapper)。• gdk-pixbuf 库(-lgdk_pixbuf),图像处理库。• pango 库(-lpango),处理国际化文本。• gobject 库(-lgobject),包含作为 gtk 基础的类型系统。• gmodule 库(-lgmodule),动态运行库。• glib 库(-lglib),包含各种函数; gtk是基于 glib 的,因此你总需要这个库。• xlib 库(-lx11),gdk 要使用。• xext 库(-lxext),包含共享内存位图和其它 x 扩展。• math 库(-lm),数学库,这个被 gtk 因各种目的而使用。 3.3相关函数接口介绍 gtk初始化gtk_initvoid gtk_init (int *argc, char ***argv)函数功能: gtk初始化,会在每个gtk程序中调用。该函数设定了默认的视频(visual)和颜色映射模式(color map)。 2.gkt主处理循环gtk_main
4.3屏4G手机 Galaxy S Aviator上市
基于libconfig进行配置文件解析
中国移动5G手机用户达9000万,全年将超1亿
全装修成品住宅兴起 前装+智能家居是当前的发展难点
如何设置步进电机驱动器的参数
GTK入门教程
明明都是学生,为什么有的人活得逍遥又自在
仔细来盘点一下2018上半年国内的纯电动汽车局势
华为P10于27日亮相MWC:配置与价格成正比,新一代徕卡双摄是亮点
弯道操控性犹如手术刀一样精准,深度测评嘉年华两厢1.5L劲动型
5G手机的设计核心是什么?
迅远RFID无障碍通道门实现无障碍通道人员及物品的跟踪管控
英国陆军订购哈里斯T7拆弹机器人
区块链在供应链物流中的影响
防爆烟温复合探测器的特点和工作原理是怎样的
iphone8什么时候上市?iphone8最新消息:iphone8产能不足,网友大呼:我选三星note8!
垃圾代码应该怎么写
SPINAND UBI离线烧录开发指南
两款三星手机正在做HTML5的基准测试
关于骨传导耳机和气传导耳机的区别,你可能还不知道!