posts - 24,  comments - 62,  trackbacks - 0

Glade是针对GTK+工具箱与GNOME桌面开发环境的快速图形界面开发工具.用Glade设计的用户接口以XML的文件形式保存,然后根据需要由程序通过libglade库文件来动态加载.因为使用了libglade库,Glade XML文件能够被C,C++,Java,Perl,Python,C#等等语言所支持.针对其他未涉及的语言的支持也是方便的.

在网上可以见到某些关于Glade的教程,大都是关于Linux平台和Glade 2的,因为原先Glade作为快速开发工具,集成代码生成功能,生成C文件.所以常常有初学者对网上某些教程所提及的"generate"(生成代码)功能表示迷惑,在新版本的Glade-3上找不到对应的功能.

新版本的Glade-3是对原先Glade代码的完全重写.一个显著的变化就是去除了代码生成功能.这样做是有原因的,即然代码生成功能不被提倡使用,而是更鼓励使用libglade功能.但是如果你真需要代码生成功能的话,它还是可以做为插件来提供的.另一个显著的不同是glade-3设计用来最大化使用GObject的自省机制(GObject introspection),来使外部工具箱和部件的控制,信号和属性的集成更加容易.

如果看过Say Hello to GTK+的话,可能感觉那样的窗体程序太简单了.那么现在让我们借助Glade弄点儿复杂一点儿的界面吧.首先来瞧瞧Glade长什么样,下图就是Glade在windows下的界面.左边的窗体的小部件选择器,相当于调色板.中间是主菜单,右边的是属性窗体.

glade_win

现在开始创建一个类似于文本编辑器的图形界面.按照上图标注的顺序,依次添加window部件,vertical box部件,menu bar部件,text view部件和Status部件.vertical box设置三行,它是用来进行界面布局,分割空间用,这是gtk+设计与传统的windows UI设计很不同的地方.后三个部件是放置vertical box中的,最后设计完成图形如下.保存取名为win.glade.如果你感兴趣的话,可以用文件编辑器打开这个文件看看,正如所说的那样,它是一个xml格式的文本文件.

win

现在我们设置相关的头文件和库文件,编辑一个glade.c文件,添加进以下的代码,运行看看,会出现如上图的对话框.虽然这个对话框什么都不干,但是通过Glade,我们能较为容易地设计界面,而不用通过gtk函数,一个一个将控件实现.

#include <gtk/gtk.h>
#include <glade/glade.h> int main(int argc, char* argv[]) { GladeXML *gxml; GtkWidget *window; gtk_init (&argc, &argv); gxml = glade_xml_new ("win.glade", NULL, NULL); window = glade_xml_get_widget (gxml, "hello"); g_object_unref (G_OBJECT (gxml)); gtk_widget_show (window); gtk_main (); return 0; }
posted on 2008-03-27 20:49 len 阅读(10134) 评论(8)  编辑 收藏 引用 所属分类: 程序开发

FeedBack:
# re: Say Hello to Glade
2008-07-22 00:25 | lyre
glade 的资料似乎非常少啊,刚才按照这文章尝试了一下,编译也没有出现错误,运行时有问题了

test:11756): Gtk-CRITICAL **: gtk_widget_show_all: assertion `GTK_IS_WIDGET (widget)' failed

搞不懂……  回复  更多评论
  
# re: Say Hello to Glade
2008-07-22 00:36 | lyre
唔……原来是我没有改窗口的名称  回复  更多评论
  
# re: Say Hello to Glade
2008-09-18 12:08 | 断了的猫
@lyre
apt-get install libglade-doc 阿.. 呵呵 资料很全的  回复  更多评论
  
# re: Say Hello to Glade[未登录]
2009-03-11 10:29 | alex
文件保存时选libglade  回复  更多评论
  
# re: Say Hello to Glade
2009-06-11 23:32 | yifei
可是我的还是会出错,  回复  更多评论
  
# re: Say Hello to Glade
2010-02-12 09:19 | hit
gladetest.obj : error LNK2019: unresolved external symbol _glade_xml_get_widget referenced in function _main
gladetest.obj : error LNK2019: unresolved external symbol _glade_xml_new referenced in function _main
C:\Documents and Settings\sony\My Documents\Visual Studio 2005\Projects\gladetest\Debug\gladetest.exe : fatal error LNK1120: 2 unresolved externals
Build log was saved at "file://c:\Documents and Settings\sony\My Documents\Visual Studio 2005\Projects\gladetest\gladetest\Debug\BuildLog.htm"
gladetest - 3 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========  回复  更多评论
  
# re: Say Hello to Glade
2010-02-12 09:21 | hit
添加了所有的LIb后仍然如此  回复  更多评论
  
# re: Say Hello to Glade[未登录]
2014-06-05 18:18 | haha
(test:20410): libglade-WARNING **: Expected <glade-interface>. Got <interface>.

(test:20410): libglade-WARNING **: did not finish in PARSER_FINISH state

(test:20410): libglade-CRITICAL **: glade_xml_get_widget: assertion `self != NULL' failed

(test:20410): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed

(test:20410): Gtk-CRITICAL **: IA__gtk_widget_show: assertion `GTK_IS_WIDGET (widget)' failed
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(4)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜