当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : glade3 libglade Treeview 问题
帖子发表于 : 2008-07-11 15:16 
头像

注册: 2006-08-11 0:44
帖子: 89
送出感谢: 0 次
接收感谢: 0 次
glade3 生成xml,在界面上添加treeview。显示是空白。
然后请问怎么编辑自己的代码,才可以在treeview中显示,行列。
添加自己的内容。 :shock:


_________________
Linux fans,
Research and development


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-07-11 15:45 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
安装devhelp。然后,在glade里面可以f1吧。
或者直接进devhelp搜索。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-07-11 16:11 
头像

注册: 2006-08-11 0:44
帖子: 89
送出感谢: 0 次
接收感谢: 0 次
大侠,误会我的意思了。我会使用treeview。也可以插入数据。
问题在于 ,如何在main中 调用 xml文件中定义过的treeview组建。
然后在给treeview赋值。
就是说在xml里现定义国了treeview,然后怎么初始华treeview.


_________________
Linux fans,
Research and development


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-07-11 16:27 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
还是一样啊。你不管用不用xml载入控件,数据初始化,还是那些控件的相关函数。devhelp里面吧控件相关的函数,都集中了。用就是。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-07-11 17:09 
头像

注册: 2006-08-11 0:44
帖子: 89
送出感谢: 0 次
接收感谢: 0 次
郁闷阿 。不知道能不能找个例子。
gkt 文档不全。初次遇到这种情况。develhelp 也有,就是不会用。
函数查了不少,不知道用那个。
有个例子吗?


_________________
Linux fans,
Research and development


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-07-13 17:50 

注册: 2007-02-07 22:56
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
treeview可以说是一个前台,负责数据的显示
你需要创建一个model,这个model用来处理数据之类
model在glade上是做不了,要在代码里面自己实现
然后在treeview添加model中需要显示的数据(可以全部,也可以显示部分);

比如在model中,每一列都有属性 (序号,名称,用户名,密码等等),
然后你在treeview中设置一列中显示哪里属性,比如(序号,用户);


GtkTreeModel

GtkTreeModel — The tree interface used by GtkTreeView


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-07-16 11:49 

注册: 2007-07-16 16:49
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
enum
{
COL_FIRST_NAME = 0,
COL_LAST_NAME,
COL_YEAR_BORN,
NUM_COLS
};
GtkListStore *liststore;
GtkTreeIter iter;
liststore = gtk_list_store_new(NUM_COLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT);
/* Append an empty row to the list store. Iter will point to the new row */
gtk_list_store_append(liststore, &iter);
/* Fill fields with some data */
gtk_list_store_set (liststore, &iter,
COL_FIRST_NAME, "Joe",
COL_LAST_NAME, "Average",
COL_YEAR_BORN, (guint) 1970,
-1);[code][/code]


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-08-08 9:18 
头像

注册: 2006-08-11 0:44
帖子: 89
送出感谢: 0 次
接收感谢: 0 次
多谢兄弟们了。这个我也学会了,用gtk的mvc 还不错。就是这个架构写起来比较麻烦。
m model 存储数据和数据类型
v view 显示数据可以有选择的显示,隐藏一些不显示
c control 控制显示内容 和 view 对应
遗憾的是 treeview tutorial 只有英文的。
下面是我找的教程,再次感谢楼上兄弟的分享。

GtkWidget *mytree = NULL;
GtkTreeStore *lefttree = NULL;


树型模型的建立:
void setupTreeStore()
{
? lefttree = gtk_tree_store_new(1,G_TYPE_STRING); ?
? GtkTreeIter iter ;
? GtkTreeIter child;
? gtk_tree_store_append (lefttree, &iter, NULL);//建立一个空行
? gtk_tree_store_set (lefttree, &iter ,0,"root1",-1);//为此行设置值

? gtk_tree_store_append (lefttree, &iter, NULL);//建立另一个空行
? gtk_tree_store_set (lefttree, &iter ,0,"root2",-1);//为此行设置值
? ?
? gtk_tree_store_append (lefttree, &child, &iter);//为上一行建立一个子行
? gtk_tree_store_set (lefttree, &child ,0,"child1",-1);//为此子行设置值
? ?

//更多行依此类推..........

}
?

树型视图的建立以及与数据模型的关联:
//要想让视图显示出数据,必须建立GtkCellRenderer与GtkTreeViewColumn
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;

//关联视图与模型
gtk_tree_view_set_model(GTK_TREE_VIEW(mytree),GTK_TREE_MODEL(lefttree));

//将数据模型交给视图管理,视图销毁时数据会被一同销毁
g_object_unref (G_OBJECT (lefttree));

//建立一个GtkCellRenderer?
renderer = gtk_cell_renderer_text_new ();

//设置GtkCellRenderer的渲染方式
g_object_set (G_OBJECT (renderer),
? "foreground", "red",
? NULL);

//建立一个带标题的列 并且将renderer放入其中使其能显示内容
column = gtk_tree_view_column_new_with_attributes ("Family", renderer,
? "text", 0,
? NULL);
//将列设置为可以手动改变大小
?gtk_tree_view_column_set_resizable(column,TRUE);

//将列加入gtk_tree_view
gtk_tree_view_append_column (GTK_TREE_VIEW (mytree), column);
? ?

gtk_widget_show_all(mytree);

下面为建立好的树型视图实现一个功能:
? 当用户选中一个有子行的行时按Enter或Space键展开或收起子行,当选中一个没有子行的行时按Enter或Space键后台打印一些信息。
/*
TreeView的"row-activated"信号产生条件:
? --在gtk_tree_view_row_activated()被调用时
? -- 一个行被双击时
? -- 选中一个不可编辑的行,按下Space, Shift+Space, Return,Enter键时
*/
//此回调函数与 TreeView的"row-activated"信号相连接
void on_lefttree_row_activated (GtkTreeView *tree_view,
? GtkTreePath *path,
? GtkTreeViewColumn *column,
? gpointer user_data) ?
...{
? GtkTreeIter iter ;
? //根据path获得iter
? if (gtk_tree_model_get_iter(GTK_TREE_MODEL(lefttree), &iter, path))
? ...{
? //得到iter,判断iter指向的行是否有子行
? if ( gtk_tree_model_iter_has_child (GTK_TREE_MODEL(lefttree), &iter) )
? ...{
? //有子行,展开本行
? if ( gtk_tree_view_expand_row(tree_view,path,FALSE) )
? ...{
? //展开本行成功
? g_print("expand child ");
? }
? else //本行已经被展开
? ...{
? //收起本行
? gtk_tree_view_collapse_row(tree_view,path);
? g_print("collapse child ");
? }
? }
? else
? ...{
? //没有子行,直接执行规定的功能
? g_print("do some ");
? }
? }

? ?

}


获得treeview中选中的一行的GtkTreeIter或path:
GtkTreeSelection* select = gtk_tree_view_get_selection( tree_view );
gtk_tree_selection_select_path( select, path );
gtk_tree_selection_select_iter( select, &iter );

要想更改GtkTreeIter指向的数据的值,使用:
gtk_tree_store_set (lefttree, &iter,CHECKED_COLUMN ,data);



GtkTreeView本身是不带横纵滚动条的,把他放入GtkScrolledWindow中就可以了,滚动条会随内容自动调整。


_________________
Linux fans,
Research and development


页首
 用户资料  
 
9 楼 
 文章标题 : Re: glade3 libglade Treeview 问题
帖子发表于 : 2008-10-24 10:50 

注册: 2008-06-02 11:44
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
学习...


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译