当前位置:Linux教程 - Linux - gtk编程经验两点

gtk编程经验两点

编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->图像,有个透明选项,用了很漂亮

胡正
2001.11.2
[email protected]
http://forlinux.yeah.net