I have three abilities: Develop software, Write books and Film reality. All are Free as in freedom.
-- www.huzheng.org

English German French Russian Spanish
Chinese Simplified Chinese Traditional Japanese Korean Portuguese



一切有为法,如梦幻泡影,如露亦如电,应作如是观。



胡正最近几年都没在工作,很穷了!欢迎捐赠,供养胡正阿罗汉!

谁借我2万元钱啊!

 文章搜索
 
文章分类
您所处的位置: 妖光linux编程首页 --> 文章列表 --> 胡正的技术文章
gtk编程经验两点
2001.11.2

编yq的时候,对于tree,treeitem控件,treeitem有sub_tree指向子树,但
没有at_tree的指针,为了得到treeitem所在的tree,我采用了自己编控件
的方法.
struct _YqTreeItem
{
	GtkTreeItem tree_item;
	GtkTree *attree;
	gchar nodename[260];
	ConfigFile *cfg;
};
这样同时也可以为treeitem添加了相关的属性.如nodename.
但这样很麻烦.我通过看其它代码找到了更好的方法.

*************
GtkWidget*
lookup_widget     (GtkWidget       *widget,
                          const gchar     *widget_name)
{
  GtkWidget *parent, *found_widget;

  for (;;)
    {
      if (GTK_IS_MENU (widget))
        parent = gtk_menu_get_attach_widget 
        	(GTK_MENU (widget));
      else
        parent = widget->parent;
      if (parent == NULL)
        break;
      widget = parent;
    }

  found_widget = (GtkWidget*) gtk_object_get_data 
  (GTK_OBJECT (widget),widget_name);
  if (!found_widget)
    g_warning ("Widget not found: %s", widget_name);
  return found_widget;
}
***********
这是从anjuta创建的project的src/support.c中找到的,这个
函数可得到父控件.其实就是利用了widget->parent属性,
treeitem的attree就是这个.



***********
gtk_object_set_data(GTK_OBJECT(list_item),
			    list_item_data_key,
			    string);


item_data_string=gtk_object_get_data(list_item,
					     list_item_data_key);
					     
************					     
这是从gtktutorial 1.2 sec-gtklistexample.html中找到的,
有了这个函数就可以为任何控件
添加属性了.
 

我以前看的书和资料对gtkwidget,gtk_object这些基本控件都没有
详细的说明,但这两个的用法
都很重要,我想要学好gtk还要把gtk的头文件看看,再就是多看其它
软件的源码.

呵呵.就这么一点,可能对大多数人没有什么用.就顺便提个小技巧.
gnome terminal->setting->preference->图像,有个透明选项,用
了很漂亮.

返回列表






菩萨道Linux编程 欢迎来信交流!

大其心,容天下之物。虚其心,助天下之善。平其心,观天下之事。潜其心,明天下之理。定其心,应天下之变。

宇宙中有无数的有情众生,我发愿帮助他们觉醒。我的缺点无穷无尽,我发愿要克服他们。佛法是未知的,我发愿弄懂它。觉醒的道路是可望不可及的,我发愿要去实现它。

佛法大海,唯信能入,唯智能度,博大精深,难见难知,寂然高尚,不落逻辑,微妙甚深,唯有智者得见之,唯有行者得明之,唯有修行者得证之。
www.huzheng.org Copyleft 2000-2021 All rights reserved