編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