我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: [原创]Glade简化gtk2图形编程---初学感想 隐藏签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ direction /di'rekən/ n. 方向,指导,指挥,管理,(pl.)用法说明 ]


[原创]Glade简化gtk2图形编程---初学感想

最近看图形编程,进度缓慢,中文资料奇缺。今天简单学了一下Glade,发现它是个很强的工具,强并不是说它的
集成度,而是它是图形界面和代码分离,很先进的思想。有意在Unix like OS下进行图形软件开发的Glade
一定要好好研究。
注:不用Glade也可以进行图形软件开发,但是你的效力和可维护性要差很多。
注:Glade有点像IDE,但很弱,Glade是用来产生XML的,XML和gtk2的结合要用libglade。


版本>>>
  目前是稳定版本是2.10.1
  3.x将去除代码生成功能,使它更加关注图形XML控制文档的输出,代码生成往往产生误导。

安装Glade2>>>
  只介绍FreeBSD下的方法。
  在FreeBSD下用ports安装
  $cd /usr/ports/devel/glade2
  $make install clean

启动>>>
  $rehash   (FreeBSD 专有)
  $glade-2

参考资料>>>
  主要还是官方网站http://glade.gnome.org
  gnome中文站也有一点
  附上中文FAQ
Copy code
Table of Contents

=================



1. 关于Glade的一般信息



1.1 Glade有哪些文档?

1.2 有没有范例代码?

1.3 Glade生成的C代码必须使用特定的许可协议吗?



2. 在Glade创建用户界面



2.1 向一个窗口加入一个控件后, 它充满了整个窗口,不能再加入任何其它控件.

2.2 如何更改控件颜色, 比如让一个标签变成红色?

2.3 如何在按钮上增加一幅位图?

2.4 如何一次性加入几个相同的控件?(这句不太好译)

2.5 使用滚动窗口时出现以下警告信息:

Gtk-WARNING **: gtk_scrolled_window_add(): cannot add non scrollable

widget use gtk_scrolled_window_add_with_viewport() instead

2.6 Glade支持哪些图像格式?

2.7 如何加入一个回调函数(signal handler)?



3. 联编(Building) Glade生成的C代码



3.1 如何联编Glade生成的代码?



3.2 出现错误信息:

aclocal: configure.in: 10: macro `AM_PATH_GTK' not found in library



3.3 出现错误信息:

** CRITICAL **: file glade_gnome.c: line 939

(glade_gnome_write_menu_item_source):

assertion `source_buffer != NULL' failed.



4. 使用Glade生成的C代码



4.1 Glade生成了哪些文件?

4.2 哪些文件可以被安全地修改,哪些会被程序覆盖?

4.3 如何向工程中加入自己的资源文件?

4.4 如何向工程中加入库?

4.5 在回调函数中如何获得一个控件的指针?

4.6 如何获得另一个窗口中的控件的指针?

4.7 如何获得GtkOptionMenu的值?

4.8 当GtkOptionMenu值改变时如何调用一个函数?

4.9 如何连接到GtkAdjustment的信号?

4.10 窗口显示之前如何向其中的GtkCList控件中加入一行?





==============================================================================



1. 关于Glade的一般信息

==================================



1.1 Glade有哪些文档?



在GNOME版本的Glade中,帮助菜单中有快速入gate教材(Quick-Start Guide)、手册和FAQ。但这些并没有涉及到使用Glade的各方面。



网络上还有一些其它文件:



o 西班牙语入gate教材 - [url]http://tigre.aragon.unam.mx/m3d/links_es.htm[/url]

o 意大利语入gate教材 - [url]http://digilander.iol.it/robang/glade[/url]



我并没有看到过专gate介绍Glade的书, 在Wrox出版社为Linux开发者出版的一本书中其中的一章介绍到了Glade.



当有其它相关资料时,我会在[url]http://glade.gnome.org[/url]上更新。





1.2 没有范例代码?



在Glade的examples/editor目录下,有一个简单的文件编辑器例子。

如果你的Glade是个二进制包 (比如一个RPM包), 这些文件可能被

安装在/usr/doc/glade-X.X.X目录下. 如果你找不到

从[url]http://glade.gnome.org.[/url]下载Glade的tar包。



这个网站有一些用Glade创建的程序的连接.

其中可能有一些有用的代码. 请浏览[url]http://glade.gnome.org[/url]上的Application页面.





1.3 Glade生成的C代码必须使用特定的许可协议吗?



不。Glade生成的C代码可以使用任何许可协议。



不过基于开源软件的精神我们建议你使用GPL或LGPL许可协议。







==============================================================================



2. 在Glade创建用户界面

=====================================



2.1 向一个窗口加入一个控件后, 它充满了整个窗口,不能再加入任何其它控件.



这并不是Glade的一个Bug! 在GTK+中使用容器放置控件。

经常使用的容器在调色板上主页面的下部。

试着向窗口中加入一个纵向盒状容器,再向盒状容器中加入一个表格。

知道如何做了吧?



如果你想把控件放置在一个特定的位置上,

可以试一下Fixed容器。不过不推荐使用这种方法,原因是当窗口或对话框改变大小

时就显得不好看,而且当把标签和按钮上的文字翻译成其它语言后无法匹配(fit)。





2.2 如何更改控件颜色, 比如让一个标签变成红色?



可以使用GTK+的 rc文件来设置控件的颜色和字体。

如果打开了Glade中 'Set Widget Names'工程选项,可以使用控件的名字更简单地指向控件。

请查看[url]http://developer.gnome.org/doc/API[/url]上的GTK+资源文件文档。



还可以在代码中调用来gtk_widget_modify_style()改变控件的样式,比如:



GdkColor red = { 0, 65535, 0, 0 };

GtkRcStyle *rc_style = gtk_rc_style_new ();

rc_style->fg[GTK_STATE_NORMAL] = red;

rc_style->color_flags[GTK_STATE_NORMAL] |= GTK_RC_FG;

gtk_widget_modify_style (widget, rc_style);

gtk_rc_style_unref (rc_style);





2.3 如何在按钮上增加一幅位图?



创建一个按钮,并在弹出菜单上选择 'Remove Label' (去掉标签)。

你现在可以向按钮中加入任何控件,比如一个内有一幅位图和一个标签的横向盒状容器。

将来Glade会有更简单的方法来创建这种按钮。



2.4 如何一次性加入几个相同的控件?



在调色板中选择控件的同时按下 'Control' 键。这个控件就会一直处于选择状态,

直到你选择了另一个控件或选择器。





2.5 使用滚动窗口时出现以下警告信息:



Gtk-WARNING **: gtk_scrolled_window_add(): cannot add non scrollable

widget use gtk_scrolled_window_add_with_viewport() instead



可以忽略这个警告。这个信息是在提醒人们更新他们的代码,

因为从GTK+ 1.0到GTK+ 1.2滚动窗口发生很大的变化,不过Glade代码是正确的。

这个警告不会出你的最终程序中。





2.6 Glade支持哪些图像格式?



如果是创建GTK+程序,图像必须是XPM格式。

(GTK+ 2.0包含了gdk-pixbuf库,可以支持很多种图像格式。)



如果是创建GNOME程序,可以使用大多数图像格式。

不过大多数图像比如图标建议选择PNG格式。



注意: 可以用GIMP程序或ImageMagick工具箱中的'convert'功能来转换图像格式。





2.7 如何加入一个回调函数(signal handler)?



按以下步骤:



o 选择要加入回调函数的控件。

o 选择属性窗口中的 'Signals'页。

o 点击'Signal:'域右边的'...'按钮,会弹出一个关于这个控件的信号列表。

o 选择准备用来连接函数的信号。

o Glade自动在'Handler:'域创建这个回调函数的名字,你可以更改这个名字。

o 按 'Add'按钮把这个回调函数加入此控件的回调函数列表中。



当产生C代码后,在callbacks.c文件中会有一个空的回调函数,你可以在其中

加入自己的代码。





==============================================================================



3. 联编(Building) Glade生成的C代码

=========================================



3.1 如何联编Glade生成的代码?



联编生成的C代码需要automake版本 >= 1.4以及autoconf版本 >= 2.13。

如果打开gettext支持,还需要gettext版本 >= 0.10.35。

README文件中'Requirements'节有相关的链接。



在工程的根目录下运行'./autogen.sh'来启动

automake、autoconf和相关的程序来产生Makefiles文件。configure的任何

选项都可以直接写在./autogen.sh后面,比如:



./autogen.sh --prefix /usr/local/gnome



接下来运行'make'来创建你自己的程序。



注意: 如果是GNOME程序,必须再运行'make install',这样位图文件可以被正确地安装。

不然,程序可以运行但看不到位图。



3.2 出现错误信息:



aclocal: configure.in: 10: macro `AM_PATH_GTK' not found in library



这条错误信息的意思是找不到gtk.m4文件。(gtk.m4文件是一套m4的宏,

是GTK+的一部分,用来创建GTK+程序。)

aclocal程序(automake程序的一部分)查找宏并加到程序根目录下的aclocal.m4文件中。



想知道GTK+安装在哪里,运行 'gtk-config --prefix'即可。

gtk.m4文件应该在'share/aclocal'子目录下。

想知道aclocal程序使用的目录,可以运行 'aclocal --print-ac-dir'。



应该把GTK+ m4文件的安装目录加入到ACLOCAL_FLAGS环境变量中,

比如:如果GTK+ m4文件在目录/usr/local/share/aclocal中,

在$HOME/.profile文件中加入以下内容:



export ACLOCAL_FLAGS="-I /usr/local/share/aclocal/"





3.3 出现错误信息:



** CRITICAL **: file glade_gnome.c: line 939

(glade_gnome_write_menu_item_source):

assertion `source_buffer != NULL' failed.



在仅仅是GTK+程序中使用GNOME系统菜单项。

编辑所有的菜单确保每个菜单项的"Stock"属性设为"None"。







==============================================================================



4.使用Glade生成的C代码

======================================





4.1 Glade生成了哪些文件?



以下是一些缺省的输出文件,如果你改变了工程选项,文件名称可能有所不同。



autogen.sh - 按正确次序运行automake, autoconf和其它相关程序的脚本文件,

使创建程序更简单。可以把给configure参数直接传递给它。运行

后可以键入 'make'来创建程序。

configure.in - 传递给autoconf的标准脚本,用来产生configure脚本。



Makefile.am - 传递给automake的标准make规则,用来产生Makefile.in文件。

Makefile.in可以被configure脚本转换为Makefile文件。



acconfig.h - 包含一些宏,这些宏在configure脚本中被设置,并加入到

config.h头文件中(在所有源文件中头文件应该是最先被包含进来的)。

gettext支持需要使用到大多数宏(ENABLE_NLS, HAVE_CATGETS,

HAVE_GETTEXT, HAVE_LC_MESSAGES, HAVE_STPCPY),

GNOME则需要HAVE_LIBSM宏 (but it doesn't hurt a GTK+ app),

另一些是由Glade加入的(PACKAGE_LOCALE_DIR, PACKAGE_DATA_DIR,

PACKAGE_SOURCE_DIR).

stamp-h.in - automake用来做为时间戳,以便重新创建出一些已生成的文件。





AUTHORS - 这些文件全是空文件, 以符合GNU的规定。

ChangeLog

NEWS

README



src/Makefile.am - 标准automake文件。

src/main.c - 包含main()主函数,主函数可以创建每一个窗口/对话框。



src/interface.h - 函数声明,调用这些函数可以生成Gladed中创建的窗口和对话框。



src/interface.c - 生成窗口、对话框及其它控件的代码。



src/callbacks.h - 信号及所写回调函数的声明。



src/callbacks.c - 信号处理及回调函数的代码。

src/support.h - 一些支持函数的声明,包括lookup_widget()函数,可以通过这个

函数得到控件的指针。

src/support.c - 支持函数的代码。





如果开启gettext支持, 会创建po子目录,POTFILES.in文件以及一个单独的ChangeLog

文件。POTFILES.in文件列出了包含有可翻译字符串的资源文件,你写的任何资源文件

也要加在里面。



对于GNOME程序,会有macros目录,包含所有用来创建工程的m4宏。(这些宏做为

GNOME的一部分应该已经安装好,但不幸的是在GNOME 1.0.X中并没有这样做。希望在

在GNOME今后的版本中会加以改正,这样就不需要这个目录了)。



*注意*: 如果在创建工程后改变了 'GNOME Support'或 'Gettext Support'工程选项,

则需要更新文件比如configure.in, Makefile.am。最好的解决方法就是在'Project

Options'对话框里改变工程目录,重新创建工程。不过得把加在回调函数的所有代码

拷贝出来。另一个方法是删除autogen.sh, configure.in, Makefile.am, src/Makefile.am,

和src/main.c文件,用Glade重新生成这些文件。不过如果你改变过这些文件,需要再把这些

更改加进去。(希望将来Glade能够改得更好一些。)







4.2 哪些文件可以被安全地修改,哪些会被程序覆盖?



Glade不会覆盖大多数文件。如果联编文件(build files)不存在,它将会重建

这些文件 (相应的工程选项要被设置)。



Glade会覆盖的文件有:



interface.h

interface.c

support.h

support.c



(如果你在工程对话框中更改了这些文件的名称,可能与以上名称不同)





这些文件最顶部会有'DO NOT EDIT'(不要编辑)的信息。





如果你加入或更新了任何信号处理,它们会加入在callbacks.h和callbacks.c文件中。

因此你加入的任何回调函数代码完全安全。如果你改变了一个回调函数的名称,则

需要把删除旧版本并将代码拷到新函数中。







4.3 如何向工程中加入自己的资源文件?



把资源文件(和任何头文件)加入到src/Makefile.am(project1_SOURCES变量的值)中

(假定'project1'是你的工程名称)。



如果使用gettext, 应该同时把资源文件加入到topo/POTFILES.in中,以便能够翻译这些

字符串。







4.4 如何向工程中加入库?



你需要为在工程的configure.in文件中的库加入一个测试,

确认CPPFLAGS变量和LIBS变量已更新为库的说明。(这句不太懂)

(CPPFLAGS变量包含了所有传递给C预处理程序的 -I 标记,

LIBS变量包含了传递给连接器的-l 和 -L 选项)。



autoconf程序提供宏如 AC_CHECK_HEADER和AC_CHECK_LIB,可以

用来检查普通的头文件和库。



许多GTK+和Gnome库提供了配置脚本比如gtk-config,可以输出

所需要的CPPFLAGS和LIBS标记。



例如,libxml提供了一个xml配置脚本,可以象下面那样使用:



dnl Get libxml flags & libs

AC_PATH_PROG(xml_config, xml-config)

if test "x$xml_config" = "x"; then

AC_MSG_ERROR([*** xml-config not found.])

fi



XML_CFLAGS=`$xml_config --cflags 2>/dev/null`

XML_LIBS=`$xml_config --libs 2>/dev/null`

CPPFLAGS="$CPPFLAGS $XML_CFLAGS"

LIBS="$LIBS $XML_LIBS"



注意: 确保把你的configure.in测试放在调用AC_OUTPUT前面。





4.5 在回调函数中如何获得一个控件的指针?



如果有窗口内任一控件的指针,你可以通过调用Glade提供的lookup_widget()函数来获得

窗口内其它控件的指针(在support.c文件中)。



传入参数为窗口内任一控件的指针和想要得到指针的控件名称。通常在信号处理函数中可以

用它的第一个参数做为lookup_widget()函数的第一个参数,例如:



void

on_button1_clicked (GtkButton *button,

gpointer user_data)

{

GtkWidget *entry1;



entry1 = lookup_widget (GTK_WIDGET (button), "entry1");



...

}





注意如果使用libglade,以上代码将不会起作用。相对应的代码应该是:





void

on_button1_clicked (GtkButton *button,

gpointer user_data)

{

GladeXML* xml;

GtkWidget* entry1;



xml = glade_get_widget_tree (GTK_WIDGET (button1));

entry1 = glade_xml_get_widget (xml, "entry1");



...

}





4.6 如何获得另一个窗口中的控件的指针?



需要跟踪所有上层(toplevel)窗口的指针。对于简单的程序,可以用全局变量来存储

这些指针。



对于大多数复杂的程序可以使用gtk_object_set_data()及相关函数来存储在此窗口中

另一个窗口的指针。例如,如果你想创建一个对话框并希望对主窗口中的控件进行操作,

可以这样做:



dialog = create_dialog1 (); /* Call the function generated by Glade. */

gtk_object_set_data (GTK_OBJECT (dialog), "main_window", main_window);



当在对话框代码需要对主窗口进行操作时,可以这样做:



main_window = gtk_object_get_data (GTK_OBJECT (dialog), "main_window");



注意: 必须要很小心地确保这个指针有效。如果这个指针所指向的窗口被销毁,确保再

也不使用这个指针,否则你的程序将会崩溃。





4.7 如何获得GtkOptionMenu的值?



调用gtk_menu_get_active()并传入GtkOptionMenu控件的menu做为参数,可以获得当前

所选菜单项。可以用g_list_index()函数查找到它在菜单中的索引号:



void

on_button1_clicked (GtkButton *button,

gpointer user_data)

{

GtkWidget *option_menu, *menu, *active_item;

gint active_index;



option_menu = lookup_widget (GTK_WIDGET (button), "optionmenu1");

menu = GTK_OPTION_MENU (option_menu)->menu;

active_item = gtk_menu_get_active (GTK_MENU (menu));

active_index = g_list_index (GTK_MENU_SHELL (menu)->children, active_item);



g_print ("Active index: %i\n", active_index);

}





4.8 当GtkOptionMenu值改变时如何调用一个函数?

Glade目前并不支持, 不过你可以手工设置。



创建一个窗口后,获得option menu控件指针,并连接此控件菜单(menu)的"deactivate":



window1 = create_window1 ();

option_menu = lookup_widget (window1, "optionmenu1");

gtk_signal_connect (GTK_OBJECT (GTK_OPTION_MENU (option_menu)->menu),

"deactivate", GTK_SIGNAL_FUNC (on_option_selected),

NULL);





向callbacks.c中加入一个信号处理. 你可以象上一个问题那样获得所选项的索引号(index):



static void

on_option_selected (GtkMenuShell *menu_shell,

gpointer data)

{

GtkWidget *active_item;

gint item_index;



active_item = gtk_menu_get_active (GTK_MENU (menu_shell));

item_index = g_list_index (menu_shell->children, active_item);



g_print ("In on_option_selected active: %i\n", item_index);

}





4.9 如何连接到GtkAdjustment的信号?

Glade目前并不支持,不过你可以象问题3.6(应为4.Cool中的一样手工来设置。



创建窗口后,获得包含有adjustment的容器的指针,并连接到

"changed"或"value_changed"信号:



window1 = create_window1 ();

hscale = lookup_widget (window1, "hscale1");

gtk_signal_connect (GTK_OBJECT (GTK_RANGE (hscale)->adjustment),

"changed", GTK_SIGNAL_FUNC (on_adjustment_changed),

NULL);





4.10 窗口显示之前如何向其中的GtkCList控件中加入一行?



用Glade生成的'create' 函数创建一个窗口后,可以使用

lookup_widget()函数获得GtkCList控件指针,并按需要加入行,例如:



GtkWidget *window, *clist;

gchar *row[2]; /* Our GtkCList only has 2 columns. */



window = create_window1 ();

clist = lookup_widget (window, "clist1");



row[0] = "Hello";

row[1] = "World";

gtk_clist_append (GTK_CLIST (clist), row);



row[0] = "Second";

row[1] = "Row";

gtk_clist_append (GTK_CLIST (clist), row);



gtk_widget_show (window1);



[ 此贴被u0u0在2005-09-25 16:37重新编辑 ]
老了,唉
顶端 Posted: 2005-09-25 16:22 | [楼 主]
u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ video /'vidiəu/ n. 录像(机);a. 录像的,视频的 ]


下面是一个例子
文件start.glade
Copy code
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<!DOCTYPE glade-interface SYSTEM "[url]http://glade.gnome.org/glade-2.0.dtd[/url]">

<glade-interface>

<widget class="GtkWindow" id="window1">
<property name="border_width">50</property>
<property name="visible">True</property>
<property name="title" translatable="yes">window1</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>

<child>
  <widget class="GtkButton" id="button1">
    <property name="border_width">25</property>
    <property name="visible">True</property>
    <property name="can_focus">True</property>
    <property name="label" translatable="yes">确定</property>
    <property name="use_underline">True</property>
    <property name="relief">GTK_RELIEF_NORMAL</property>
    <property name="focus_on_click">True</property>
    <accessibility>
     <atkproperty name="AtkObject::accessible_name" translatable="yes">确定</atkproperty>
    </accessibility>
    <signal name="clicked" handler="on_button1_clicked" last_modification_time="Sun, 25 Sep 2005 07:41:45 GMT"/>
  </widget>
</child>
</widget>

</glade-interface>


文件start.c
Copy code
/*
* To learn how to use Glade2,my first test programme
*/

#include <gtk/gtk.h>
#include <glade/glade.h>

void
ok_button_clicked (GtkWidget *widget, gpointer user_data)
{
printf ("Hello World.\n");
gtk_main_quit ();
}


int
main (int argc, char *argv[])
{
GladeXML *main_window;
GtkWidget *window;
GtkWidget *button;

gtk_init (&argc, &argv);

/* load the interface */
main_window = glade_xml_new ("start.glade", NULL, NULL);

/* connect the signals in the interface */

/* Have the ok button call the ok_button_clicked callback */
button = glade_xml_get_widget (main_window, "button1");
g_signal_connect (G_OBJECT (button), "clicked",
            G_CALLBACK (ok_button_clicked),
            NULL);

/* Have the delete event (window close) end the program */
window = glade_xml_get_widget (main_window, "window1");
g_signal_connect (G_OBJECT (window), "delete_event",
            G_CALLBACK (gtk_main_quit), NULL);

/* start the event loop */
gtk_main ();

return 0;
}


2个文件放在同一个目录。
编译
$cc -Wall -g start.c -o start `pkg-config --cflags --libs gtk+-2.0``pkg-config --cflags --libs libglade-2.0`
运行
$./start
结果见图
远程图片:start.jpg
老了,唉
顶端 Posted: 2005-09-25 16:23 | [1 楼]
u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ slippery /'slipəri/ a. 滑溜的,狡猾的,不可靠的 ]


试着修改
start.glade

<property name="title" translatable="yes">window1</property>
改为

<property name="title" translatable="yes">u0u0's glade test</property>


在运行
$./start
看看发生了什么。。。

标签名变了,而你不需要重新编译


It's perfect!
老了,唉
顶端 Posted: 2005-09-25 16:30 | [2 楼]
liux0229





性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 67
威望: 2
浮云: 1818
在线等级:
注册时间: 2004-12-29
最后登陆: 2010-03-01

5come5帮你背单词 [ security /si'kjuəriti/ n. 安全 ]


通过xml实现代码和数据分离,确实是很不错的想法.
以前也用glade,主要用来做界面原型代码生成.
由于glade需要对代码文件的完全控制权,所以做完原型后基本上放弃使用glade.
上次做的东东界面很简单,所以尽管到后期添加新的界面元素不太方便,但也没什么大碍.不过当时就觉得效率不高.
gtk的英文资料也不全.Ref倒是有,但是没有详细介绍各种控件的Guide.直接看Ref对初学者不方便.
记得当时到处找list box该怎么实现,结果发现已经合并到了Tree Model中,而且后者及其复杂...(功能倒是强大)
Snape gazed for a moment at Dumbledore, and there was revulsion and hatred etched in the harsh lines of his face.
"Severus...please..."
Snape raised his wand and pointed it directly at Dumbledore.
"Avada Kedavra!"
顶端 Posted: 2005-09-27 18:47 | [3 楼]
u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ more /mo:/ a. 更多的,较高程度的,另外的;n. 更多数量,较多数量;ad. 更,更多,另外,再 ]


才开始用glade,不喜欢它的代码生成,只用它输出XML就行了,Glade3将完全去掉代码生成。
老了,唉
顶端 Posted: 2005-09-27 21:01 | [4 楼]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ architect /'a:kitekt/ n. 建筑师,设计师,缔造者 ]


完全转向xlib下的基础图形库了,感觉比较透.
顶端 Posted: 2005-09-27 22:44 | [5 楼]
Douglus.Lee





性别: 帅哥 状态: 该用户目前不在线
头衔: 我曾经也有梦想!
等级: 荣誉会员
发贴: 1142
威望: -5
浮云: 746
在线等级:
注册时间: 2004-03-06
最后登陆: 2009-11-28

5come5帮你背单词 [ test /test/ n. & vt. 试验,测试,检验 ]


safdfasdfa

不错不错,我的中文输入终于搞定了!!!

happy~while thank you very much.
I have to work after my graduate this year .

>shutdown -s -t 300.
It is time to read book!
顶端 Posted: 2005-09-27 23:23 | [6 楼]
Douglus.Lee





性别: 帅哥 状态: 该用户目前不在线
头衔: 我曾经也有梦想!
等级: 荣誉会员
发贴: 1142
威望: -5
浮云: 746
在线等级:
注册时间: 2004-03-06
最后登陆: 2009-11-28

5come5帮你背单词 [ fake /feik/ n. 冒充者,冒牌货;v. 赝造,伪造 ]


我的留言有点不相关主题哈,不过楼主知道我的意思:)
I have to work after my graduate this year .

>shutdown -s -t 300.
It is time to read book!
顶端 Posted: 2005-09-27 23:25 | [7 楼]
u0u0



资源小王子奖
性别: 帅哥 状态: 该用户目前不在线
头衔: 韩剧主力(曾经),FreeBSD fans
等级: 荣誉会员
发贴: 4710
威望: 6
浮云: 578
在线等级:
注册时间: 2003-11-22
最后登陆: 2011-01-13

5come5帮你背单词 [ protein /'prəuti:n/ n. 蛋白质 ]


Quote:
下面是引用蜀山狂斩于2005-09-27 22:44发表的:
完全转向xlib下的基础图形库了,感觉比较透.


准备自己写图形图?!


Quote:
下面是引用Douglus.Lee于2005-09-27 23:23发表的safdfasdfa:
不错不错,我的中文输入终于搞定了!!!

happy~while thank you very much.


congratulations!
老了,唉
顶端 Posted: 2005-09-28 12:11 | [8 楼]
蜀山狂斩



性别: 保密 状态: 该用户目前不在线
等级: 希望之光
发贴: 1981
威望: 1
浮云: 1435
在线等级:
注册时间: 2004-02-27
最后登陆: 2011-11-23

5come5帮你背单词 [ perimeter /pə'rimitə/ n. 周边,周长 ]


No,I just want to have a feeling of face to face.
If for application,I think we should use Gtk/gnome,it is absolutely more efficient!
but if you use xlib ,you will get a complete control of it,thus more fun!
顶端 Posted: 2005-09-28 23:20 | [9 楼]
我来我网·5come5 Forum » Linux专区

Total 0.021911(s) query 5, Time now is:12-23 00:45, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号