所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

用gtk开发界面创建窗口,如何更改窗口的?

发布时间:2020-04-15 16:52:05

资讯分类:gtk  更改  界面  创建  控件  事件  安装
用gtk开发界面创建窗口,如何更改窗口的?

* 使用 GTK+ 和 Glade 快速开发 Linux 图形界面

** GTK+ 简介

*** 基本概念

GTK+ 是一种用于创建图形界面的库. 嗯, gnome 用的就是它, 不过并不是说只

有在 gnome 环境中才能用, 只要系统上装有 GTK 的库 (基本上有图形系统的个

人机都会有的啦) 就能运行基于 GTK 的程序. 除了 UNIX-like 平台, 它还移植

到 windows 上, 还有面向嵌入设备的 framebuffer 版本等等.

GTK 依赖两个重要的库. 一个是 GLib, 这并不是一个图形库, 也和 glibc 不同

, 它大抵上提供了一些接口以屏蔽系统的不同, 比如 gint 在哪里都是 32bit

的, 等等; 另一个是 GDK, 它是一个设备无关的图形库, 支持基本的画点, 以及

与窗口管理器沟通等任务, 由于 GTK 被设计成能在各个平台, 而非仅仅在

XWindow 环境下使用, 所以这个库也是必要的. 而在他们上面的 GTK 库, 就提

供了一些 widget --- 可以理解为控件啦, 不过窗口也是一个 widget 的说, 给

我们使用, 并提供了包装良好的事件响应机制.

*** GTK+ 开发基础

要开发基于 GTK 的软件, 必须先安装 GTK+ 的开发包. 检查是否正确安装的办

法是在安装后执行 ``pkg-config --cflags --libs gtk+-2.0'', 如果安装不正

确, 会提示找不到相应的包.

GTK 本身是基于 C 的库, 当然也有 C++ 等语言的 wrap, 但它的整个体系是面

向对象的. 其最基本的类是 GObject, GtkObject 继承了它, GtkObject 又派生

出我们最经常用到的 GtkWidget, 我们使用的所有窗体控件都派生于它. 于是,

在 C 环境中我们就要手动处理这些类转换, GTK 和底层的 GLib 等提供了一种

统一的转换方法, 比如把类型为 GtkWidget* 的 button 转换成 GtkButton 形,

写法是: GTK_BUTTON(button), 就酱子.

我不打算在这里列一个 GTK 的 hello world 占页面, 这个程序随便 google 一

下就能找到. 我们可以自己想一想一个图形界面应该如何建立.

首先我们要进行初始化, GTK 提供了 gtk_init() 作为初始化, 它检查程序参数

中的一些特定部分, 进行自己的设置. 调用方法如下:

gtk_init(&argc, &argv);

将 argc 和 argv 传指针的目的是 gtk_init 会对他们进行加工, 把 GTK 自己

用到的一些参数抽取出来.

接着, 我们必须要创建这些控件吧, GTK 中, 创建一个控件会返回一个

GtkWidget 类型 (或它的派生类) 的指针, 所有创建控件的函数的格式是

gtk_控件类型_new(参数表). 比如创建一个窗口的写法是:

GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

然后, 我们要设定事件响应函数, GTK 中的事件叫做 signal. GTK 的事件响应

函数接口应该是类似这样的

void

destroy(GtkWidget *widget, gpointer data)

我们把它连入到一个控件中的方法是这样的

g_signal_connect(G_OBJECT(window), "destroy

留言与评论(共有 0 条评论)
   
验证码:
Top