资料介绍
GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以你可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何钱来购买许可证和使用权。
GTK 被称为 GIMP 工具包是因为最初写它是用来开发 GIMP (GNU 图像处理程序) 的,但是它现在已经被用于很多软件项目了,包括 GNOME (GNU 网络对象模型环境)。GTK 是在 GDK (GIMP Drawing Kit) 和 gdk-pixbuf 的基础上建立起来的,GDK 基本上是对访问窗口的底层函数 (在 X 窗口系统中是 Xlib) 的一层封装,gdk-pixbuf 是一个用于客户端图像处理的库。
GTK 实质上是一个面向对象的应用程序接口 (API)。尽管完全用 C 写成的,但它是基于类和回调函数 (指向函数的指针) 的思想实现的。
还有一个名为 GLib 的第三个组件,包含一些标准函数的替代函数,以及一些处理链表等数据结构的函数等。这些替代函数被用来增强GTK 的可移植性,因为它们所实现的一些函数在其它 Unix 系统上未实现或不符合标准,比如 g_strerror()。一些是对 libc 的对应函数的增强,比如 g_malloc() 具有增强的调试功能。
在 2.0 版中,GLib 又加入这样一些新内容:构成 GTK 类层次基础的类型系统 (type system),在 GTK 中广泛使用的信号系统,对各种不同平台的线程 API 进行抽象而得的一个线程 API,以及一个加载模块的工具。
作为最后一个组件,GTK 使用了 Pango 库来处理国际化文字输出。
本教程讲述 GTK 的 C 接口。还有许多其它语言的 GTK 绑定如 C++、Perl、Python、TOM、Ada95、Objective C、Free Pascal、Eiffel、Java 和 C#。如果你想使用 GTK 其它语言的绑定,请先查看该绑定的文档。有时这些文档会讲一些重要的概念,然后你再来参考本教程。还有一些跨平台的 API (如 wxWindows 和 V),它们把 GTK 作为一个支持的平台。同样,先参考它们的文档。
如果你用 C++ 来开发 GTK 应用程序,有以下几点需要注意。已有一个 GTK 的 C++ 绑定叫做 GTK-- (译者注:现在叫做 gtkmm),提供一个更符合 C++ 规范的接口,你可以先看看这个接口。如果你由于种种原因不喜欢这种方法,还有另外两种使用 GTK 的方法。首先,你可以只使用 C++ 中的 C 子集来调用 GTK,这样就可以使用本教程描述的 C 接口。其次,你可以用下述方法同时使用 GTK 和 C++:把所用的回调函数定义为 C++ 类中的静态成员函数,然后仍然使用 C 接口来调用 GTK。如果你选择后一种方法,你可以把指向要操作的对象的指针 (即所谓的 "this")作为回调函数的 data 参数。选择哪一种方法仅仅是个人的喜好问题,因为不管用哪一种方法,你都会得到 C++ 和 GTK。它们都不需要特殊的预处理程序,因此你可以同时使用标准 C++ 和 GTK。
本教程试图尽可能详细地描述 GTK,但是肯定不能面面俱到。本教程假设你能够较好的理解 C 语言,并且了解怎样编写一个 C 程序。有 X 编程经验会很有帮助,但不是必要条件。如果 GTK 是你学习的第一个构件工具包,请告诉我们你怎样找到这个教程,以及学习时有什么困难。还有其它一些语言的绑定,如 C++、Objective C、ADA、Guile 等,但我不了解这些。
用 GTK 来写 Hello World
编译 Hello World 程序
信号和回调函数的原理
事件
Hello World 详解
继续
数据类型
深入探索信号处理函数
改进了的 Hello World
组装构件
组装盒的原理
盒的细节
组装示范程序
用表组装
表组装示例
构件概述
类型转换
构件的组织
无窗口构件
按钮构件
一般按钮 Normal Buttons
开关按钮 Toggle Buttons
复选按钮 Check Buttons
单选按钮 Radio Buttons
调整对象 Adjustments
创建一个调整对象
轻松使用调整对象
“调整对象”的内部机制
范围构件 Range Widgets
滚动条构件 Scrollbar Widgets
比例构件 Scale Widgets
创建一个比例构件
函数和信号(至少讲了函数)
常用的范围函数
设置更新方式
获得和设置调整对象
键盘和鼠标绑定
示例
杂项构件
标签 Labels
箭头 Arrows
工具提示对象 The Tooltips Object
进度条 Progress Bars
对话框 Dialogs
标尺 Rulers
状态栏 Statusbars
文本输入构件 Text Entries
微调按钮 Spin Buttons
组合框 Combo Box
日历 Calendar
颜色选择 Color Selection
文件选择 File Selections
容器构件 Container Widgets
事件盒 The EventBox
对齐构件 The Alignment widget
固定容器 Fixed Container
布局容器 Layout Container
框架 Frames
比例框架 Aspect Frames
分栏窗口构件 Paned Window Widgets
视角 Viewports
滚动窗口 Scrolled Windows
按钮盒 Button Boxes
工具栏 Toolbar
笔记本 Notebooks
菜单构件
手工创建菜单
手工菜单示例
使用套件
套件示例
无文档构件
快捷标签 Accel Label
选项菜单 Option Menu
菜单项 Menu Items
复选菜单项 Check Menu Item
单选菜单项 Radio Menu Item
分隔菜单项 Separator Menu Item
分离菜单项 Tearoff Menu Item
曲线图 Curves
绘图区 Drawing Area
字体选择对话框 Font Selection Dialog
消息对话框 Message Dialog
Gamma 曲线图
图像 Image
插头和插座 Plugs and Sockets
树视区 Tree View
文本视区 Text View
设置构件的属性
超时、IO 和 Idle 函数
超时 Timeouts
监控IO
Idle 函数
高级事件和信号处理
信号函数
连接和断开信号处理函数
阻塞和反阻塞信号处理函数
发出和停止信号
信号的发射和传播
操作选中区
概述
获取选中区信息
提供选中区
拖放
概述
属性
函数
设置源构件
源构件上的信号
设置目的构件
目的构件上的信号
GLib
定义
双向链表
单向链表
存储管理
计时器
字符串处理
实用程序和错误处理函数
GTK 的 rc 文件
rc 文件的功能
GTK rc 文件的格式
rc 文件示例
编写你自己的构件
概述
一个构件的剖析
创建一个复合构件
介绍
选择一个父类
头文件
_get_type() 函数
_class_init() 函数
_init() 函数
其余的...
从头创建构件
介绍
在屏幕上显示构件
表盘构件的原形
主体
gtk_dial_realize()
大小磋商
gtk_dial_expose()
事件处理
可能的增强
深入的学习
涂鸦板,一个简单的绘图程序
概述
事件处理
绘图区构件和绘图
添加XInput支持
允许扩展设备信息
使用扩展设备信息
得到更多关于设备的信息
进一步的讲解
编写 GTK 应用程序的技巧
投稿
鸣谢
教程的版权和许可声明
GTK 信号
GtkObject
GtkWidget
GtkData
GtkContainer
GtkCalendar
GtkEditable
GtkNotebook
GtkList
GtkMenuShell
GtkToolbar
GtkButton
GtkItem
GtkWindow
GtkHandleBox
GtkToggleButton
GtkMenuItem
GtkCheckMenuItem
GtkInputDialog
GtkColorSelection
GtkStatusBar
GtkCurve
GtkAdjustment
GDK 事件类型
示例程序代码
Tictactoe
tictactoe.h
tictactoe.c
ttt_test.c
GtkDial
gtkdial.h
gtkdial.c
dial_test.c
Scribble
scribble-simple.c
scribble-xinput.c
术语表
- 如何使用面板的AD20中文教程 0次下载
- Altium Designer14中文教程 36次下载
- STM32F103中文教程及参考手册 325次下载
- 【串口屏LUA教程】Lua脚本语言中文教程
- proteldxp中文教材 0次下载
- Chariot中文教程 3次下载
- CST中文教程 70次下载
- Eclipse中文教程 0次下载
- sw2003中文教程 0次下载
- PADS Layout 2007中文教程 0次下载
- POWER PCB 中文教程
- matlab中文教程pdf
- multisim中文教程 0次下载
- cam350中文教程 0次下载
- Protel DXP 中文教材 (PDF文件格式) 0次下载
- USB 2.0信号质量测试 144次阅读
- Diodes公司USB 2.0信号调节器PI5USB212产品介绍 315次阅读
- 什么是CAN2.0协议? 1004次阅读
- IDEA接口测试神器Apipost Helper 2.0简介 1857次阅读
- USB2.0单/双接口ESD静电浪涌保护方案 1758次阅读
- CXL 2.0设备发现的迷人路径 1392次阅读
- 鸿蒙2.0或在明年搭载于智慧穿戴中首次亮相 2868次阅读
- 如何区分SATA 2.0接口与SATA 3.0接口 8.3w次阅读
- TensorFlow 2.0 将包含许多 API 变更 5468次阅读
- 开发工具Visual Studio 2017的安装和使用图文教程 9027次阅读
- Directive Games解读ARKit 2.0带来的AR游戏可能性 4320次阅读
- 一文教你怎么测量压敏电阻的好坏 7.1w次阅读
- 极路由怎么设置_极路由详细设置图文教程 12.5w次阅读
- prolog中文教程及语法规则 2w次阅读
- 精通USB 2.0集线器电源管理 4443次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多