文档库 最新最全的文档下载
当前位置:文档库 › gtk交叉编译(最全)

gtk交叉编译(最全)

gtk交叉编译(最全)
gtk交叉编译(最全)

一、所需的源码包

1. GNU make 工具

2. GNU gettext 软件包(当系统上没有gettext() 函数的时候需要)

3. GNU libiconv 库(当系统上没有iconv() 函数的时候需要)

4. fontconfig库

fontconfig 是提供系统范围内字体设置,定制和允许应用程序访问的函数库。

5. FreeType库

GTK+(基于DirectFB)的字体绘制是通过pango+freetype+fontconfig三者协作来完成的,其中,fontconfig负责字体的管理和配置,freetype负责单个字符的绘制,pango则完成对文字的排版布局。Freetype是一个操作字体的函数库,它不但可以处理点阵字体,也可以处理多种矢量字体,包括truetype字体,为上层应用程序提供了一个统一的调用接口。

6. libpng库

libpng软件包包含libpng 库,这些库被其他程序用于读写png文件。PNG 库是用来创立和操作PNG 格式的图形文件.PNG 格式是设计来替代GIF,它对于更小范围的TIFF(标记图象文件格式)来说, 有了很多的进步和拓展并且减少了关于专利权的麻烦.

7. jpegsrc库

能够使用JPEG算法压缩文件。

8. tiff库

tiff库被很多程序用于读写tiff文件。

9.pkg-config 工具

pkgconfig 包括pkg-config 程序,用来在编译脚本中向编译器传递头文件包含路径或库文件路径。

对于支持pkg-config 工具的GTK+ 及其依赖库来说,库的头文件的搜索路径的设置变成了对.pc 文件搜索路径的设置。.pc 文件的搜索路径是通过环境变量PKG_CONFIG_PATH 来设置的,pkg-config 将按照设置路径的先后顺序进行搜索,直到找到指定的.pc 文件为止。

10. GLib 库

GLib是GTK+和GNOME工程的基础底层核心程序库,创建GDK 和GTK 应用程序时该库可提供许多有用的定义和函数,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。

11. ATK 库

ATK 包包含了ATK 库。ATK是可访问性工具箱(Accessibility Toolkit)的简称。ATK 为所有的GTK2程序提供了解决Accessibility 需求的框架。

12. Cairo 库

Cairo,是一个跨平台的开放源代码的矢量图形函数库,可以提供高质量的显示和打印输出。Cairo提供一个稳定的用户层API,它可以提供现代化的图形处理管理能力,如绘制和填充,映射转换,合成(注意,是合成)与改变alpha半

透明图像,高真文本显示等等。能够在不同的媒体上实现相同的输出。

13. Pango 库

Pango 库提供了底层的文本编排绘制生成函数, 一套生成整段文本布局的高层函数和帮助编辑多国文本的函数。

14. GTK+ 库

其中前五项一般比较新的Linux版本中,系统都会自带。需要注意的一个问题是如果GTK的安装路径为/opt/gtk时,在PKG_CONFIG_PATH中除了要添加/opt/gtk/lib/pkgconfig之外,还有加上/usr/lib/pkgconfig。因为安装在系统的库其.pc 文件都在/usr/lib/pkgconfig中,想要在安装GTK时用到这些系统自带的库时,必须把路径设置清楚。

在收集安装GTK所需的源码包时最重要,也是最容易忽略的一个问题就是各个包之间版本的匹配问题。我在安装GTK就忽略了这个问题,结果走了很多弯路。解决这个问题最简单的办法就是登陆GTK+ 的网站

":ftp://https://www.wendangku.net/doc/c27818789.html,/pub/gtk,在上面下载各种源码包。在这个站点上,每个GTK版本兼容的源码包都放在一个文件夹下。例如我选择安装GTK v2.6,只要在ftp://https://www.wendangku.net/doc/c27818789.html,/pub/gtk/v2.6中下载各个包即可。不过选择V2.6的朋友要严重注意一个问题,支持GTK V2.6的pango包有两个版本-1.8.0、1.8.1,1.8.0是一个失败的版本,如果选择它,在安装GTK时就会死活找不到pango库。我当时就是这个版本的受害者,花了很长时间也无法在安装GTK时连接pango库,后来在网上看到一个老外说这个版本有bug,只能使用1.8.1版本。妈的!这不坑人吗!

根据依赖关系的要求,库的安装要按照这样的先后顺序进行:GLib、Atk、Cairo、Pango、Gtk+。

二、设置

主要包括对LD_LIBRARY_PATH和PKG_CONFIG_PATH的设置,具体如下:

> export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

> export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH 注意,如果想要使用系统中已有的fontconfig、FreeType等库,需要加上系统原有的库:

> export LD_LIBRARY_PATH=/usr/lib

> export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH

> export PKG_CONFIG_PATH=/usr/lib/pkgconfig

> export PKG_CONFIG_PATH=/usr/X11R6

/lib/pkgconfig:$PKG_CONFIG_PATH

> export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH 容易被人忽略的一点是LD_LIBRARY_PATH和PKG_CONFIG_PATH这两个环境变量只对当前的终端窗口有效。如果到了没有进行上述设置的终端窗口中,pkg-config 将找不到新安装库的.pc 文件、从而可能使后面进行的安装无法

进行。(自己犯的一个简单却造成严重后果的错误,吐血提醒大家哦)

三、源码包的安装

我安装的GTK版本为v2.6,用到的源码包包括:jpegsrc.v6b.tar.gz、

libpng-1.2.8.tar.bz2、tiff-v3.6.1.tar.gz、pkgconfig-0.15.0.tar.gz、glib-2.6.6.tar.bz2、atk-1.9.0.tar.bz2、cairo-1.2.4.tar.gz、pango-1.8.1.tar.bz2、gtk+-2.6.9.tar.bz2。把它们都放在root的主目录下。

将GTK+ 及其依赖库设置安装到同一个目录/opt/gtk下、而不是每一个库占用一个不同的目录,可以给以后的库的设置带来方便。而且,在将来不再需要这个版本的GTK+ 及其依赖库的时候可以通过删除这个目录将它们简单地去除。

1.安装pkgconfig

> tar zxvf pkgconfig-0.15.0.tar.gz

> cd /root/pkgconfig-0.15.0

> ./configure

> make

> make install

每个过程结束后,都可以用用echo $? 检查是否执行安装成功。如果输出是0,说明配置成功;0 之外的数字说明配置失败。在Linux 系统上,可以用这个方法检查一个命令或程序在其结束后返回给系统的值是多少。一般0 代表成功,非0 表示程序异常退出。

2.安装glib

> tar zjvf glib-2.6.6.tar.bz2

> cd /root/ glib-2.6.6

>./configure --prefix=/opt/gtk

>make

>make install

3.安装atk

> tar zjvf atk-1.9.0.tar.bz2

> cd /root/ atk-1.9.0

>./configure --prefix=/opt/gtk

>make

>make install

4.安装cairo

> tar zxvf cairo-1.2.4.tar.gz

> cd /root/ cairo-1.2.4

>./configure --prefix=/opt/gtk --with-x --enable-win32=no

>make

>make install

5.安装Pango

> tar zxvf cairo-1.2.4.tar.gz

> cd /root/ cairo-1.2.4

>./configure --prefix=/opt/gtk --libdir=/opt/gtk/lib --with-x

>make

>make install

6.安装libpng

> tar zjvf libpng-1.2.8.tar.bz2

> cd /root/ libpng-1.2.8

> make prefix=/opt/gtk \ZLIBINC=/opt/gtk/include ZLIBLIB=/opt/gtk/lib -f scripts/makefile.linux

>make prefix=/opt/gtk install -f scripts/makefile.linux

7.安装libtiff(就是tiff)

> tar zxvf tiff-v3.6.1.tar.gz

> cd /root/ tiff-v3.6.1

> ./configure --prefix=/opt/gtk --noninteractive \

--with-DIR_MAN=/opt/gtk/share/man

> make

> make install

8.安装libjpeg(就是jpegsrv)

> tar zxvf jpegsrc.v6b.tar.gz

> cd /root/jpeg-6b

> ./configure --enable-static --enable-shared --prefix=/opt/gtk

> make

> make install

注:jpeg默认不share library,因此要手工指定--enable-shared,一般安装lib 时这一点都是要注意的。

10.安装gtk

> tar zjvf gtk+-2.6.9.tar.bz2

> cd /root/ gtk+-2.6.9

> ./configure --prefix=/opt/gtk --with-x --without-libjpeg

> make

> make install

四、检验是否正确安装GTK

为了检验是否正确安装GTK,利用GTK编写一个简单的程序,这个程序创建200x200 大小的窗口。源码如下:

为了检验是否正确安装GTK,利用GTK编写一个简单的程序,这个程序创建200x200 大小的窗口。源码如下:

#include

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 ();

return 0;

}

用gcc 编译上面的程序:

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

成功编译后,使用命令./base运行该程序。

注意上面编译命令中使用的单引号类型是很重要的。(译者注:这里使用了“命令替换”。命令替换(command substitution)使得可以捕获一个命令的输出而在另一个命令中替换它。这个单引号不是回车键左边的那个,而是ESC键下面的那个。)

GTK图形界面编程-计算器的实现

目录 一.课程设计目的 (2) 二.课程设计任务与要求 (2) 三.功能分析 (3) 四.功能模块分析与设计 (3) 1.图形界面设计 (4) 2.按键处理模块 (4) 3.数字键处理模块 (5) 4.小数点处理模块 (6) 5.加减乘除运算按键处理模块 (6) 6.结果按键,即等号处理模块 (7)

7.清除模块 (8) 五.功能测试 (9) 六.课程设计总结 (10) 高级C语言实训报告 一.课程设计目的 现在大多数的计算器都具备+,-,*,/等四则运算的功能。用计算器来算数显然比用脑袋或用纸笔计算要来得方便。当我们看到一个很长很大的表达式需要得到结果时,我们就会想到计算器,这样,本程序就是为解决大家基本四则运算的问题而产生的。主要基于对表达式的分析并利用C进行编程进而实现算法的。C在程序运行效率、内存使用的可控性和编程的灵活性上均具有较大的优势,与汇编语言和C语言更具有面向对象的优点,我采用Ubuntu Linux操作系统以及GTK+2.0,以达到算法快速有效地执行。 二.课程设计任务与要求 1.使用C语言和GTK+图形库进行开发,计算器可以在装有GTK+运行环境的各种操作系统上运行;

2.实现标准型计算器上的四则运算功能(参考Windows 7系统标准型计算器); 3.根据课程设计进度对程序功能进行扩展: 添加捕捉键盘事件功能,通过PC键盘的数字键盘也可以进行输入; 为计算器添加存储功能(MR、M+、M-等按键功能),实现完整的标准型计算器; 4.实现科学型计算器上的四则运算功能(参考Windows 7系统科学型计算器或Ubuntu 系统基本型计算器)。 本课程设计内容是在Linux平台下开发一个简单的计算器程序,采用GCC编程工具和GTK+2.0工具包等软件为开发工具以及C语言知识实现图形化的计算器程序。该程序能够实现的对整数的加减乘除和小数的加减乘除。 三.功能分析 1.整数之间的加减乘除运算 2.小数之间的加减乘除运算 3.小数与整数之间的加减乘除运算 四.功能模块分析与设计 本计算器主要是完成整数之间、小数之间、整数和小数之间的加减乘除的运算,使用GTK+完成界面布局。 根据需求分析的结果,总体结构如下图所示:

c语言课程设计GTK+计算器的实现

目录 设计背景 (2) GTK+简介 (2) 程序实现 (3) 界面的构建 (3) 窗口的实现 (3) 按钮的实现 (4) 输入框的实现 (5) 回调函数的实现 (5) 数字键 (6) 小数点 (6) 运算符 (7) 等号 (7) 清除键 (8) 退格键 (8) 键盘事件 (8) 心得体会 (10) 参考文献 (10)

设计背景 GTK+简介 GTK+一开始是作为流行的GNU图像处理程序GIMP的一部分产生的,逐渐成为功能强大最受欢迎的工具包之一,因为变成了一个独立的项目。它是一个函数库,提供了一组已经制作好的被称为构件的组件,可以通过简单易懂的函数调用把这些组件和应用程序逻辑组合在一起,从而极大的简化了GUI的创建。 GTK+使用自由的LGPL许可证,它完全是用C语言编写的,绝大多数GTK也是用C语言编写的,也有许多语言绑定可以在C++,Python,PHP,Java中使用它。 GTK本身是建立在一组其它函数库上的,例如他需要Glib提供底层数据结构、类型、线程支持、事件循环和动态加载。 Glib和GObject提供了一组数据类型、函数和宏的标准替代集来进行内存管理和处理常见任务,从而实现跨平台开发,意味着GTK+能够可靠的移植到其他平台和体系结构上。 Glib还定义了一些方便的常量: #define FALSE 0 #define TRUE !FALSE 这些附加的数据类型基本上是标准C语言数据类型的代替,以及用于确保跨平台字节长度不变。 ●gint、guint、gchar、guchar、glong、gulong、gfloat和gdouble是标准C 语言数据类型的简单代替 ●gpointer与(void *)同义 ●gboolean 用于表示布尔类型的值,它事对int的一个包装 ●gint8、guint8、gint16、guint16、gint32和guint32是保证字节长度的有 符合和无符号类型 尽管GTK+是完全用C语言编写的,但是它通过GObjiect库支持对象和面向对象编程,这个库通过宏来支持对象继承和多态。为了方便起见,所有构件创建函数都返回一个GtkWidget类型。

一步一步学GTK+之多窗口

一、按照一定的逻辑去切割代码并实现多窗口 上一篇中完成了一个简单的软件界面,考虑到这个软件主要的目的是在软件中容纳很多控件,一个窗口中不可能全部包含进去的。所以这篇内容是我们一起来学下多窗口。既然我们要实现多窗口,那么就不能把所有代码放到一个文件中,这样会很混乱的,一个文件来放一个窗口,然后用main.c的入口文件来调度它们。使用我先把文件的结构分为: main.c——入口文件 window_main.c——主窗口文件 window_test.c——测试用的子窗口文件 common_func.c——各个窗口调用的公共函数文件 既然涉及到公共函数会被其他窗口调用,我们还需要建立一些头文件,在其中加入一些宏来防止重复包含文件。 common_func.h #ifndef __COMMON_FUNC_H__ #define__COMMON_FUNC_H__ #include GdkPixbuf *create_pixbuf(const gchar * filename); void toggle_display(GtkWidget *widget, gpointer oneofwidget); #endif// __COMMON_FUNC_H__ common.c #include "common_func.h" /* @Description: 从一个图片中获取信息得到pixbuf @param: gchar filename */ GdkPixbuf *create_pixbuf(const gchar * filename) { GdkPixbuf *pixbuf; GError *error = NULL; /* * 函数gdk_pixbuf_new_from_file() 从一个图片文件中加载图象数据,从而生成一个新的pixbuf, * 至于文件中包含图象的格式,是由系统自动检测的。如果该函数返回值是NULL 的话,程序就会出现错误。 */ pixbuf = gdk_pixbuf_new_from_file(filename, &error); if(!pixbuf) {

LINUX下GTK+实现简单计算器

摘要 随着计算机的越来越普及,学习计算机的人越来越多。作为一个学习计算机的人员,最基本的那就是必须会编程。但是在微软垄断下的现在的计算机编程大多是基于windows下的编程。设置很多人没听说过或者不会Linux下编程。本设计的目的就是为初学Linux下编程的人员提供基础的例子。让大家了解Linux下的编程。 本程序运用Linux下的工具GTK+2.0作为工具,以C语言为核心编写。简单易懂,GTK+2.0主要功能有: ●窗口与简单控件的实现 ●菜单与工具栏的实现 ●常用控件的实现 ●对话框的实现 …… 关键词:Linux GTK+2.0 Abstract As computers become increasingly popular, more and more people learn the computer. As a learning computer personnel, the most basic that we must be programmed. However, under the Microsoft monopoly in computer programming is now mostly under the windows-based programming. Set a lot of people never heard of or will not, under Linux programming. The purpose of this design is for beginners programming under Linux provides the basis of examples. Let everyone know the programming under Linux. ●Window and a simple realization of the control ●Realization of the menu and tool bar ●The realization of common control ●Realization of the dialog box …… KEYWORDS:Linux GTK+2.0

基于Linux的GTK+图形界面编程——扫雷游戏设计

基于Linux的GTK+图形界面编程——扫雷游戏设计 摘要 本篇课程设计主要说明使用Linux下的GTK+2.0库开发一个简单的扫雷程序,建立一个图片矩阵,由于图片控件不能接收事件,必须将它们放到事件盒中,才能接收到事件。这样就能处理鼠标事件以及鼠标事件对应的图片显示处理,并对用户的操作做出提示。最后可以完成基本的扫雷任务,由于本人能力有限,无法设计自定义的游戏级别,只能使用规定了的游戏级别。 关键词:linux;扫雷;GTK+;游戏

GUI PROGRAMMING BASE ON GTK+ —— MINESWEEPER GAME DESIGN ABSTRACT This course design mainly describe how to develop a minesweeper game by GTK+ library in Linux. First I create a matrix of picture, I must put they on event box for widget of picture can’t receive event. When users click on the picture, the program can deal with display of pictures and display some tips. This program can manage operator of minesweeper. But due to the limit of my ability, users can’t define the level of the game, they can only use defined level. Key words: linux; minesweeper; GTK+; Game

gtk+-安装步骤

Redhat 9.0 上安装gtk+-2.12.0的心得体会 一、首先介绍下个gtk包: 1.1什么是GTK+? GTK+是一个小型而高效的控件库,具有Motif的外观和风格.实际上,它比Motif看起来好多了,它包含有基本的控件和一些很复杂的的控件:例如文件选择控件和颜色选择控件.GTK+提供了一些独特的特性,(至少,我知道其他的控件库不提供他们),例如,按钮不提供标签,它包含了一个子控件,在很多的时候是一个标签,但是,这个子控件也可以是一个映射,图像或者任何其他的程序员想要的集合.在整个的库中,你随处可见这种伸缩性. 1.2. GTK+中的+是什么意思? GTK+中的+是什么意思?Peter Mattis的邮件这样表述: 我原来编写的gtk包含以下的三个库:libglib, libgdk and libgtk.它是一种平行的控件层次,你不能够从一个已存在的控件中得到一个新的控件,新版的gtk+包含一个比信号机制更加标准的回调机制,+用来区别原来的版本和新的版本,你可以把它看作一个加入了面向对象特性的旧版的加强版. 1.3. GTK+, GDK和GLib中的G代表什么? GTK+, GDK和GLib中的G代表什么? GTK+ == Gimp Toolkit GDK == GTK+ Drawing Kit GLib == G Library 1.4. 那里可以找到GTK+的文档? 那里可以找到GTK+的文档? 在GTK+发布版本的doc/文件夹下面, 你可以找到GTK 和GDK的参考资料,本FAQ和GTK指南.另外,你可以通过下面的网址找到这个文件HTML版本https://www.wendangku.net/doc/c27818789.html,/,打包的gtk指南,SGML, HTML, Postscript, DVI或text 的版本可以在下面找到 ftp://https://www.wendangku.net/doc/c27818789.html,/pub/gtk/tutorial 1.5运行GTK+需要安装什么 运行GTK+需要安装什么编译GTK+,你只需要一个c编译器(gcc),一个X window系统和相关的库文件. 1.6 那里可以得到GTK+ 那里可以得到GTK+ 官方网站ftp://https://www.wendangku.net/doc/c27818789.html,/pub/gtk. 一般新的GTK+版本发布的时候,这个网站都很拥挤,所以你可以试试下面列表中的镜像网站. ftp://https://www.wendangku.net/doc/c27818789.html,/etc/mirrors 下面有一些镜像网站: ?非洲- ftp://ftp.is.co.za/applications/gimp ?澳大利亚- ftp://https://www.wendangku.net/doc/c27818789.html,/pub/gimp ?芬兰- ftp://ftp.funet.fi/pub/sci/graphics/packages/gimp ?德国- ftp://infosoc.uni-koeln.de/pub/https://www.wendangku.net/doc/c27818789.html, ?日本- ftp://SunSITE.sut.ac.jp/pub/archives/packages/gimp ?英国- ftp://https://www.wendangku.net/doc/c27818789.html,/pub/X/gimp ?美国- ftp://https://www.wendangku.net/doc/c27818789.html,/pub/mirrors/https://www.wendangku.net/doc/c27818789.html,

gtk简易教程

大家一起用gtk编程1(开始与热身) 转贴请注明出处:https://www.wendangku.net/doc/c27818789.html, 作者:lvjinhua@https://www.wendangku.net/doc/c27818789.html, 2006.09.20 ?写在最前面 笔者写做本文的目的,主要是为初学GTK编程的新手们提供一个能够快速上手的学习档案,能够通过自己将所有的代码输入并编译,以达到学习的目的。同时,也希望它成为一个参考手册,希望GTK中的每一个API都能在本文中找到相应的示例。 笔者将尽力保证所有的代码都是最短小的,这样才能保证大家都有足够的动力去手工输入它。 由于笔者时间及精力有限,不能一次将所有内容呈现给所有读者,因此拟定了一个计划:每天更新一个章节的内容,在笔者的Blog上进行连载,同时会不断地对以前的内容进行修改和完善,因此为了保证大家能够读到最新的内容,请随时关注笔者的Blog:https://www.wendangku.net/doc/c27818789.html, 起笔的日子:2006.09.20 ?为什么是GTK? 为什么不是GTK?笔者不想花费太多的口水去辨证为什么选择GTK而不是其它的东西;任何技术都没有好坏之分,只有使用它的人有能力的强弱之别;笔者认为比较明智的做法是:多编些程序,少做些争论。 ?1、GTK简介 GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何费用来购买许可证和使用权。当前,GTK已经被成功地应用到了大量的自由软件及商业软件中,已经取得了很大的成功。 GTK 的创建者: Peter Mattis: petm@https://www.wendangku.net/doc/c27818789.html, Spencer Kimball: spencer@https://www.wendangku.net/doc/c27818789.html, Josh MacDonald: jmacd@https://www.wendangku.net/doc/c27818789.html, 当前,GTK主要由几大组件构成: *Gtk+:GTK的主要构件,包括所有的图形控件及大量实用的API。 *Glib:包含一些标准函数的替代函数,以及一些处理链表等数 据结构的函数等。这些替代函数被用来增强GTK 的可移植性,

linux下C语言设计GTK

设计背景 GTK+简介 GTK+一开始是作为流行的GNU图像处理程序GIMP的一部分产生的,逐渐成为功能强大最受欢迎的工具包之一,因为变成了一个独立的项目。它是一个函数库,提供了一组已经制作好的被称为构件的组件,可以通过简单易懂的函数调用把这些组件和应用程序逻辑组合在一起,从而极大的简化了GUI的创建。 GTK+使用自由的LGPL许可证,它完全是用C语言编写的,绝大多数GTK也是用C语言编写的,也有许多语言绑定可以在C++,Python,PHP,Java中使用它。 GTK本身是建立在一组其它函数库上的,例如他需要Glib提供底层数据结构、类型、线程支持、事件循环和动态加载。 Glib和GObject提供了一组数据类型、函数和宏的标准替代集来进行内存管理和处理常见任务,从而实现跨平台开发,意味着GTK+能够可靠的移植到其他平台和体系结构上。 Glib还定义了一些方便的常量: #define FALSE 0 #define TRUE !FALSE 这些附加的数据类型基本上是标准C语言数据类型的代替,以及用于确保跨平台字节长度不变。 ●gint、guint、gchar、guchar、glong、gulong、gfloat和gdouble是标准C 语言数据类型的简单代替 ●gpointer与(void *)同义 ●gboolean 用于表示布尔类型的值,它事对int的一个包装 ●gint8、guint8、gint16、guint16、gint32和guint32是保证字节长度的有 符合和无符号类型 尽管GTK+是完全用C语言编写的,但是它通过GObjiect库支持对象和面向对象编程,这个库通过宏来支持对象继承和多态。为了方便起见,所有构件创建函数都返回一个GtkWidget类型。 程序实现 要实现本次课程设计要求,首先考虑的是将图形界面和回调函数分开来实现,图形界面通过窗口、按钮、盒、文本框等GTK+构件即可实现,而回调函数应该分

GTK主题创作指南

GTK主题创作指南 author: Tim Orford date: Jan 06作者: Tim Orford日期: Jan 06 Contents内容 introduction简介 general widget properties一般部件性能 gtkrc files gtkrc文件 widget examples小工具的例子 fonts字体 key bindings键绑定 engines发动机 icons图标 cursors游标 further reading进一步阅读 introduction:简介: Gtk programmers will tell you that writing a gtk theme is easy. gtk的程序员会告诉你,写一个GTK主题是容易的。 If you have a full understanding of how gtk is put together, then that may be so, but if you dont have an intimate knowledge of the gtk api and you want to change the visual appearance of your gtk apps then this document may hopefully save you some swearing while you go through the process of trial and error trying to figure out what works and what doesnt.如果你有一个这么全面了解了GTK 是放在一起,那么这可能,但如果你没有一个熟悉的GTK的API的,你要改变你的GTK应用程序外观特征那么这个文件可能希望为您节省一些脏话,而你经过审讯过程中的错误,并试图找出什么可行,什么doesn't。 Its not difficult stuff, but can appear to be somewhat random and non-intuitive due to its close correlation with the underlying widget structure.它的东西并不难,但可以显得有些随机和非直观的部件,由于其结构与基础密切相关。 This document applies only to Gtk2, although Gtk1.2 themes are quite similar.本文件仅适用于与gtk2,虽然Gtk1.2主题非常相似。 Warning: this document is incomplete. The https://www.wendangku.net/doc/c27818789.html, tutorial may be useful.警告:本文件是不完整的。https://www.wendangku.net/doc/c27818789.html,教程可能是有用的。 theme browsing主题浏览

使用GTK+库实现一个扫雷程序

使用GTK+库实现一个扫雷程序 目录 目录 (1) 1 最基本的GTK+程序 (2) 2 事件处理与界面布局 (6) 3 扫雷程序 (10)

1 最基本的GTK+程序 1.1 GTK库的主要功能 GTK+,这个库实现的功能有, 1 图形显示 (Display) 2 事件处理 (Event) 1.2 GTK库的基本要素 GTK+的主要函数和数据结构包括以下三个部分: 1 控制流程(Control Flow) 2 控件管理(Manage Widget) 3 事件处理(Dispose Event) 1.3 一个最基本的GTK+程序 现在以一个简单的程序进行说明:

代码:simple.c ---------------------------------------- 01 #include 02 03 int main(int argc, char**argv) 04 { 05 GtkWidget *window; 06 GtkWidget *label; 07 gtk_init(&argc, &argv); 08 window=gtk_window_new(GTK_WINDOW_TOPLEVEL); 09 g_signal_connect(G_OBJECT(window), "delete_event", 10 gtk_main_quit, NULL); 11 label=gtk_label_new("GTK+"); 12 gtk_container_add(GTK_CONTAINER(window), label); 13 gtk_widget_show_all(window); 14 gtk_main(); 15 return 0; 16 } ---------------------------------------- 对代码进行简单说明:

gtk做个按钮界面

gtk做个按钮界面 #include #include #include #include Display* disp ; FakeKey *fk; static char *keyboard_display[] = { "A/0", "B/0", "C/0", "D/0", "E/0", "F/0", "G/0" }; static gushort keyboard_send[] = { XK_A, XK_B, XK_C, XK_D, XK_E, XK_F, XK_G }; void da_call (GtkDialog *dialog, gint response_id, gpointer user_data) { if (GTK_RESPONSE_OK == response_id) g_print("OK_Pressed"); else if (GTK_RESPONSE_CANCEL == response_id) g_print("CANCEL_Pressed"); } gboolean bt_release (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { gint i = GPOINTER_TO_UINT(user_data); fakekey_press_keysym(fk, keyboard_send[i], 0); fakekey_release(fk); return TRUE; } void clicked_callback(GtkButton *button, GtkWindow *window) {

Gtk 分栏列表框

G t k C L i s t (分栏列表构件)是G t k L i s t (列表构件)的替代品,但它提供更多的特性。分栏列表构件是多列列表构件,它有能力处理数千行的信息。每一列都可以有一个标题,而且可以是活动的。你还可以将函数绑定到列选择上。 -------------------------------------------------------------------------------- 创建分栏列表构件GtkCList 创建G t k C l i s t构件的方法和创建其他构件的方法是类似的。有两种方法,一种是容易的,一种是难的。因为G t k C L i s t可以有多列,因而在创建它之前,必须确定要创建的列表的列数。 GtkWidget *gtk_clist_new ( gint columns ); GtkWidget *gtk_clist_new_with_titles( gint columns,gchar *titles[] ); 第一种方式很简单,而第二种需要作一些解释。每一列都可以有一个与之相联系的标题,标题可以是一个标签构件,或者是一个按钮,只要能够对我们的动作作出响应。如果要使用第二种方式,则必须提供一个指向标题文本的指针,指针数目应该与列数相等。当然,我们可以用第一种方式,然后再手工添加标题以达到相同的目的。 注意,分栏列表构件没有自己的滚动条,如果要提供滚动条功能,应该将分栏列表构件放在一个滚动窗口构件中。 -------------------------------------------------------------------------------- 操作模式 有几个可以用于改变分栏列表构件行为的属性。先看下面这个: void gtk_clist_set_selection_mode( GtkCList *clist,GtkSelectionMode mode ); 就像函数名所暗示的一样,它设置了分栏列表的选择模式。第一个参数是要设置的分栏列表构件,第二个参数是单元的选择模式(取值在g t k e n u m s . h中有定义)。目前,有下面这些模式可以使用: ? G T K _ S E L E C T I O N _ S I N G L E:选定内容为N U L L,或包含一个指向单个被选中项目的G l i s t指针。 ? G T K _ S E L E C T I O N _ B R O W S E:如果G t k C L i s t中不包含构件,或只包含不敏感的构件, 则选定内容为N U L L。否则,它包含一个指向G L i s t结构的G L i s t指针,因而包含一个列表项。 ? G T K _ S E L E C T I O N _ M U LT I P L E:如果没有列表项被选中,选定内容为NULL ;或者选定内容是一个指向第一个被选中列表项的指针。然后依次指向G L i s t结构中第二个被选中的列表项,等等。对G t k C L i s t来说这是缺省模式。 ? GTK_SELECTION_EXTENDED:选中内容总是N U L L。 在G T K今后的版本中可能会增加其他模式。 还可以定义分栏列表构件的边框。使用以下函数完成定义:

GTK学习个人笔记

推荐https://www.wendangku.net/doc/c27818789.html, 可是目前GTK+的stable版式 2.18 ,unstable版是2.19.3 哪里跑出来的2.8和2.4呀。原来↓:

GtkWidget* gtk_button_new_from_stock (const gchar *stock_id) 从一个"常备项目/固化词条/glib提供的固有原料"(stock item),创建一个GtkButton包含图像和文本. 一些stock ids具有预处理宏,例如GTK_STOCK_OK和GTK_STOCK_APPLY. 如果遇到不识别的stock_id, 那么他们将被视为mnemonic label (参见gtk_button_new_with_mnemonic()). stock_id :the name of the stock item Returns:a new GtkButton gtk_button_new () GtkWidget* gtk_button_new (void) 创建一个新的GtkButton构件(widget). 用gtk_container_add()为button构件添加一个子构件。 Returns :The newly created GtkButton widget. gtk_box_pack_start () void gtk_box_pack_start (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding) 为BOX添加child, 从box的起点开始装入child. 这个child被装入后,其他的任何child装入时都将从起点装入child。(从左向右,从上到下) box :一个GtkBox child :被添加到box中的GtkWidget expand : TRUE if the new child is to be given extra space allocated to box. The extra space will be divided evenly between all children of box that use this option fill : TRUE if space given to child by the expand option is actually allocated to child, rather than just padding it. 如果expand 被设为FLASE的时候,这个属性将无效. A child is allocated the full height of a GtkHBox and the full width of a GtkVBox. This option affects the other dimension padding : extra space in pixels to put between this child and its neighbors, over and above the global amount specified by "spacing" property. If child is a widget at o reference ends of box, then padding pixels are also put between child and the reference edge of box ---------------------------- gtk_box_pack_end () void gtk_box_pack_end (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding) 为BOX添加child, 从box的尾部(end)开始装入child. 这个child被装入后,其他的任何child装入时都将从尾部(end)装入child。(从右向左,从下到上) 其他同上记gtk_box_pack_start()。 expand / fill / padding 参数的动作,基本如下图

相关文档