当前位置: 技术问答>linux和unix
怎样用GtkTreeView显示一个多行多列的控件?
来源: 互联网 发布时间:2016-05-19
本文导语: 另外GtkCellRenderer,GtkTreeStore,GtkTreeIter这几个东西都是什么意思,怎么用啊? 比方写一个: name age (这行是title) zhangsan 20 lisi 21 如何用GtkTreeView实现呢?(PS:不准改用GtkCList) | ...
另外GtkCellRenderer,GtkTreeStore,GtkTreeIter这几个东西都是什么意思,怎么用啊?
比方写一个:
name age (这行是title)
zhangsan 20
lisi 21
如何用GtkTreeView实现呢?(PS:不准改用GtkCList)
比方写一个:
name age (这行是title)
zhangsan 20
lisi 21
如何用GtkTreeView实现呢?(PS:不准改用GtkCList)
|
#include
int main(int argc,char *argv[])
{
GtkTreeView *tree;
/*因为没有gtk_tree_iter_new()这样的函数,所以最好不要声明指针,如果声明指针的话,最好这样声明:
GtkTreeIter *iter=(GtkTreeIter*)mollac(sizeof(iter));
*/
GtkTreeIter iter;
GtkListStore *store;
GtkTreeViewColumn *column;
GtkCellRenderer *cell;
GtkWidget *window;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(gtk_main_quit),NULL);
tree=GTK_TREE_VIEW(gtk_tree_view_new());/*新建treeview控件*/
cell=gtk_cell_renderer_text_new();/*新建cell,就是表格里的每个小格子*/
column=gtk_tree_view_column_new_with_attributes("名称",cell,"text",0,NULL);/*把小格子添加到列里*/
gtk_tree_view_append_column(tree,column);/*把列添加到treeview控件里*/
cell=gtk_cell_renderer_text_new();
column=gtk_tree_view_column_new_with_attributes("年纪",cell,"text",0,NULL);
gtk_tree_view_append_column(tree,column);
store=gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_INT);/*新建一个liststore,用来存放数据*/
gtk_list_store_append(store,&iter);/*向liststore里添加一行,iter存放这一行的信息*/
gtk_list_store_set(store,&iter,0,"zhangsan",1,20,-1);/*向iter所指向的行里,添加数据*/
gtk_list_store_append(store,&iter);
gtk_list_store_set(store,&iter,0,"lisi",1,21,-1);
gtk_tree_view_set_model(tree,GTK_TREE_MODEL(store));/*让tree显示store的内容*/
gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(tree));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
int main(int argc,char *argv[])
{
GtkTreeView *tree;
/*因为没有gtk_tree_iter_new()这样的函数,所以最好不要声明指针,如果声明指针的话,最好这样声明:
GtkTreeIter *iter=(GtkTreeIter*)mollac(sizeof(iter));
*/
GtkTreeIter iter;
GtkListStore *store;
GtkTreeViewColumn *column;
GtkCellRenderer *cell;
GtkWidget *window;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(gtk_main_quit),NULL);
tree=GTK_TREE_VIEW(gtk_tree_view_new());/*新建treeview控件*/
cell=gtk_cell_renderer_text_new();/*新建cell,就是表格里的每个小格子*/
column=gtk_tree_view_column_new_with_attributes("名称",cell,"text",0,NULL);/*把小格子添加到列里*/
gtk_tree_view_append_column(tree,column);/*把列添加到treeview控件里*/
cell=gtk_cell_renderer_text_new();
column=gtk_tree_view_column_new_with_attributes("年纪",cell,"text",0,NULL);
gtk_tree_view_append_column(tree,column);
store=gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_INT);/*新建一个liststore,用来存放数据*/
gtk_list_store_append(store,&iter);/*向liststore里添加一行,iter存放这一行的信息*/
gtk_list_store_set(store,&iter,0,"zhangsan",1,20,-1);/*向iter所指向的行里,添加数据*/
gtk_list_store_append(store,&iter);
gtk_list_store_set(store,&iter,0,"lisi",1,21,-1);
gtk_tree_view_set_model(tree,GTK_TREE_MODEL(store));/*让tree显示store的内容*/
gtk_container_add(GTK_CONTAINER(window),GTK_WIDGET(tree));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
|
column=gtk_tree_view_column_new_with_attributes("名称",cell,"text",0,NULL);/*把小格子添加到列里*/
gtk_tree_view_append_column(tree,column);/*把列添加到treeview控件里*/
cell=gtk_cell_renderer_text_new();
column=gtk_tree_view_column_new_with_attributes("年纪",cell,"text",1,NULL); /*这里写错了,第4个参数指定对应store里的哪个列,这里应该对应1列*/
gtk_tree_view_append_column(tree,column);/*把列添加到treeview控件里*/
cell=gtk_cell_renderer_text_new();
column=gtk_tree_view_column_new_with_attributes("年纪",cell,"text",1,NULL); /*这里写错了,第4个参数指定对应store里的哪个列,这里应该对应1列*/
|
up
|
运行一下gtk-demo,楼主需要的功能可以直接从gtk-demo得到源码(当然需要裁剪一下)
|
帮顶吧
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。