`
deepfuture
  • 浏览: 4424066 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80258
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70671
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103854
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:287078
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15097
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:68124
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32429
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46192
社区版块
存档分类
最新评论

学习使用GTK+ 3.使用GtkBuilder、界面设计器Glade和其他GTK+组件

 
阅读更多
这一部分包括GTK+相关组件的简要介绍,和界面设计器的使用方法。如果内容存在错误,或者方法不适用与你的电脑,请在下方评论区留言给我,谢谢!

GTK+的姊妹库

准确地说,GTK+仅指一个界面物件库。为了制作GTK+,一些副产品相继诞生,比如C语言界很有名的的GLib库。这些GTK+的“姊妹库”都是GTK+所依赖的,而且,制作GTK+程序时可能需要直接使用这些库。

GLib:目前最好的C语言数据结构库之一。除数据结构外,它还包括许多常用小工具,比如多线程管理、定时器。GTK+界面无关的部分基本都被并入GLib中。
GIO:GLib库相对独立的一部分,专门处理输入输出流。新版本的GIO还包括了网络连接功能。
GObject:GLib库相对独立的一部分,维护一套对象系统。GTK+疯狂地使用这个系统。
ATK:ATK提供一组查看和控制接口以方便对GTK+程序的访问。
pango:负责处理GTK+中和字体有关的部分。
cairo:著名的2D渲染库,被Firefox等很多程序使用。它也是目前GTK+使用的2D渲染库,通过它可以进行矢量绘图。
gdk-pixbuf:GDK的一个部分,提供了一组位图函数,包括位图变换、位图文件读写等等。
GDK:提供一组接口,把GTK+从桌面系统细节中隔离出来。它是一组底层函数,可以直接访问窗口细节。GTK+系统有关的部分多数在这里。
这些库的API参考都可以在GNOME参考(http://library.gnome.org/devel/references.html.zh_CN)中找到。

还有一些库是GTK+依赖的第三方库,下面是几个重要的。

gettext:国际化库。主要用于制作多语言程序。运行时gettext自动识别操作系统语言,然后从已有语言包中选择一个最合适用户的。
iconv:字符集转换库。GTK+内部使用UTF-8字符集,有时需要字符集转换。
GTK+内部构成
GTK+本身只负责界面组织。它提供的函数大致可分为三类,物件(Widget)、对象(Object)和其它工具函数。

工具函数提供一些与界面关系密切的实用功能,比如剪贴板读写。

对象是一些功能更加复杂的不可见元素,它们和界面息息相关,比如GtkBuilder。

界面设计器Glade
通过代码来组织界面繁琐而不直观,因而有人为GTK+做了一款界面设计器,名为Glade,现已成为GTK+最重要的辅助工具。

接下来用一个计算器制作的实例来讲解GTK+界面设计器的使用方法。

打开Glade。Glade会自动新建一个文件,新建后会弹出对话框设置文件格式,应选用GtkBuilder。



首先建一个窗口。在左栏中找到“窗口”一项,点一下即可。中间部分的黑框即为窗口中的内容。

下面要组织窗口中的内容了。要注意的是,一个灰色区域只能放置一个物件。如果需要放置多个物件,可以使用水平框、垂直框或表格物件,这些容器可以把一个灰色区域分成多个。



添加Spin按钮(Spin按钮用于输入数字)、表格、按钮等物件,可以把界面画成想要的样子,在右下方的属性设置中,可以设置物件的各种属性。在“常规”选项卡中,可以设置一些重要的初始值,物件名等。注意:需要动态更改的物件,物件名很重要。

“包装”选项卡负责物件的间距控制和大小改变方式等。GTK+在窗口大小改变时会智能地调整物件大小,其依据的就是这个选项卡里的设置。



计算器的界面成形了。记得经常保存,Glade有时会比较脆弱。

注意:在输入完某项属性之后务必使输入焦点离开当前输入区,然后才可以保存文件,否则当前输入区的更改不会被立即保存到文件中。

载入界面
Glade文件的本质是个XML文件,这个文件可以用GtkBuilder对象载入并生成界面。下面这样写可以载入一个Glade文件。

GtkBuilder* gtk_load_glade(gchar* filename)
{
GtkBuilder *gb;

//新建一个GtkBuider对象
gb=gtk_builder_new();
//载入文件,失败则返回NULL
if(!gtk_builder_add_from_file(gb,filename,NULL))return NULL;
//连接文件中包含的所有信号
gtk_builder_connect_signals(gb,NULL);

//返回GtkBuilder对象供后面操作使用
return gb;
}

载入后还需要还需要获得已载入的物件地址,并将储存在物件指针里以便以后动态更改物件。一个聪明的策略是使指针名字和物件在Glade里设置的名字一样。用函数gtk_builder_get_object()可以获得指定名字的物件地址。为了简便,可以写一段宏代替冗长的函数调用。下面这段代码演示了获得主窗口(名为WMain)和Spin按钮(名为SAns)地址的方法。

#define w_(builder,type,name) name=GTK_##type(gtk_builder_get_object(builder,#name))

GtkWindow *WMain;
GtkSpinButton *SAns;

void cal_get_widgets(GtkBuilder* gb)
{
w_(gb,WINDOW,WMain);
w_(gb,SPIN_BUTTON,SAns);
}

主窗口开始时是不显示的,应该用下面这个函数把它显示出来。下面这个函数只能在获得物件地址后执行。

void cal_widget_init()
{
gtk_widget_show(GTK_WIDGET(WMain));
}

编写回调函数
现在的主要任务就是编写回调函数——这些函数才是程序的主角。在某个事件被触发时,对应的函数会被执行。这个函数可以在Glade中指定。在Glade中选定某个物件,然后在右下角“信号”选项卡中选择一个合适的事件,在“操作句柄”列填入函数名。

下面为窗口WMain指定destroy事件的回调函数on_WMain_destroy()。



然后编写一个函数on_WMain_destroy()。在Windows下,这个函数要加上修饰词G_MODULE_EXPORT。

G_MODULE_EXPORT void on_WMain_destroy(GtkObject* widget, gpointer user_data)
{
gtk_main_quit();
}

这个回调函数只是退出程序而已。最后献上一段main()。

int main(int argc, char *argv[])
{
GtkBuilder *gb;

gtk_init(&argc,&argv);

gb=gtk_load_glade("gtk-cal.glade");
if(gb==NULL)return -1;
cal_get_widgets(gb);
cal_widget_init();

gtk_main();

return 0;
}

这个计算器程序目前只完成了最基本的部分,这个系列后续的文章会把它做完。有关回调函数、物件函数的信息,请参考GTK+ API参考。
分享到:
评论

相关推荐

    GTK+、glade学习(C、Python实现)

    学习GTK+和Glade,不仅可以提升对GUI编程的理解,还能为LinuxCNC界面开发或其他基于GTK+的应用程序提供强大的工具支持。通过阅读提供的教程,可以深入掌握这两项技术,创建出美观且功能丰富的图形用户界面。

    glade3-3.6.7-with-GTK+(windows版本)

    Glade3是一个强大的图形用户界面(GUI)设计工具,它专为使用GTK+库的应用程序设计。GTK+是一个广泛使用的跨平台的GUI工具包,支持多种操作系统,包括Linux、Windows和macOS。版本3.6.7是Glade的一个特定版本,提供...

    Gtk+ 3.6.4 win64.zip

    - Glade:一款可视化的UI设计器,可以用来创建GTK+界面,生成对应的XML文件供程序使用。 3. 文件结构: - "bin"目录:包含了运行和编译Gtk+应用程序所需的动态链接库(dlls)、可执行文件和其他工具。 - "share...

    foundations of gtk+ development.

    《 GTK+ 开发基础》是面向程序员的一本权威指南,主要涵盖了GTK+库的使用和开发技巧。GTK+,全称GIMP Toolkit,是一个用于创建图形用户界面的跨平台工具包,广泛应用于Linux、Unix、Windows和Mac OS X等操作系统。这...

    windows下面安装gtk+glade编译开发环境方法!

    GTK+是一个流行的开源GUI工具包,广泛用于Linux、macOS和Windows等操作系统,而Glade则是一个界面设计工具,可以方便地创建GTK+应用程序的用户界面。本指南将详细介绍如何在Windows上安装和配置GTK+和Glade的开发...

    Win32下搭建Glade-Gtk+编程环境.pdf.zip

    首先,要开始在Win32上使用Glade和Gtk+,我们需要安装以下几个关键组件: 1. **MinGW**: MinGW(Minimalist GNU for Windows)是一个为Windows提供GCC编译器的项目,它允许我们在Windows上编译C和C++代码。在安装...

    Foundations.of.GTK+.Development.2007

    GTK+的设计理念是面向对象的,通过组件化和模块化的架构,可以方便地构建复杂的用户界面。 "Foundations of GTK+ Development 2007"这本书很可能深入探讨了GTK+的基础知识和最佳实践,适合初学者和有经验的开发者...

    需要了解ubuntu下GTK+配置.docx

    如果你计划使用Glade来设计GUI,还需要安装`libglade2-dev`: ```bash sudo apt-get install glade libglade2-dev ``` 最后,确保所有GTK+ 2.0相关的库都已安装: ```bash sudo apt-get install libgtk2.0* ``` ...

    Gtk-web.rar_gtk_gtk web_gtk+

    总的来说,"Gtk-web.rar_gtk_gtk+"涵盖了Linux环境下使用GTK+库进行Web相关的开发,包括理解和使用GTK的基础组件、事件处理、Web组件集成以及UI设计。通过学习这些知识,开发者能够创建功能丰富的、具有现代化界面的...

    GTK+GNOME程序设计PDF(高清)2

    本书详细介绍了两种Linux图形用户界面开发技术:GTK+/GNOME。主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的...本书虽然适合GTK+和GNOME编程的初学者学习,但不管是程序设计新手还是编程专家,都能从本书中获益。

    ubuntu 20.04 + GTK3.x 使用 Glade 和 代码, 以及手写 makefile. 编写UI程序.

    Glade 是一个基于 GTK 的图形用户界面设计器,允许开发者使用图形化的方式设计和开发用户界面。 在 Ubuntu 20.04 上,开发者可以使用 GTK 3.x 和 Glade 来开发 UI 程序。以下是使用 GTK 3.x 和 Glade 开发 UI 程序...

    GTK+ and Glade3 GUI Programming Tutorial 中文

    ### GTK+ 和 Glade3 GUI 编程教程知识点解析 #### 一、GTK+ 概念简介 **GTK+**(GIMP Toolkit)是一个用于创建跨平台图形用户界面(GUI)的应用程序框架。它主要用于Linux操作系统,但也支持其他平台如Windows和...

    gtk_ui.rar_gtk_gtk .ui_gtk mplayer_mplayer

    GTK+(GIMP Toolkit)是一个用于创建图形用户界面的开源工具包,主要使用于Linux和其他UNIX-like操作系统。它被广泛应用于各种应用程序开发,包括MPlayer这样的多媒体播放器。MPlayer是一款跨平台的命令行和图形界面...

    GTK+,Glade程序设计例程源代码

    通过分析"demo_1-0.1"中的源代码,我们可以学习如何创建基本的GTK+应用,理解控件的使用,以及如何通过Glade设计和生成UI。这不仅有助于新手快速上手,也有助于经验丰富的开发者提高效率,减少代码量,专注于业务...

    Glade-3.6.7 windows版本

    Glade是GTK+的快速开发工具。如果想做基于GTK+的开发,Glade是必不可少的。这个版本可以在Windows下使用,帮助你在Windows平台下做基于GTK+ v2.12.x的开发。GTK+开发环境可以在下面的地址下载到:...

    Starting+off+in+Glade+GTK+

    Glade GTK+是用于创建基于GTK+(GIMP Toolkit)用户界面的图形设计工具。它允许开发者通过拖放的方式设计GUI(图形用户界面),并生成相应的XML代码,这些代码可以被GTK+应用程序用来构建和管理界面。这个"Starting ...

    使用GLADE3+GTK做的简易计算器

    【标题】"使用GLADE3+GTK做的简易计算器"揭示了这个项目是基于GLADE3图形界面设计工具和GTK+库构建的一个简单的计算器应用程序。GTK+是一个流行的、跨平台的GUI(图形用户界面)工具包,广泛用于创建美观且功能丰富...

    LINUX应用程序开发指南:使用GTK+ GNOME库pdf.zip

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    编译好的Gtk3 for windows库,包含(Gtk3,Gtk3mm,glade)

    Gtk3是用于开发图形用户界面(GUI)的开源库,主要在GNOME桌面环境中使用,但也可用于其他平台,包括Windows。它提供了丰富的组件和工具,使得开发者能够创建功能丰富的跨平台应用程序。这个压缩包包含了预编译好的...

    Glade GTK+简易教程

    Glade的主要优势在于其直观的操作界面和强大的定制能力,使得开发者能够轻松地设计出复杂的GUI应用程序而无需编写大量与界面布局相关的代码。 #### 三、学习Glade的方法 1. **安装Glade:**首先确保你的系统上已经...

Global site tag (gtag.js) - Google Analytics