免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2508 | 回复: 2
打印 上一主题 下一主题

关于GtkTreeView显示数据的问题,求解,求思路 [复制链接]

论坛徽章:
6
酉鸡
日期:2013-11-04 15:30:02巳蛇
日期:2014-01-23 10:36:23双鱼座
日期:2014-01-23 13:08:332015亚冠之鹿岛鹿角
日期:2015-09-03 14:36:002015亚冠之武里南联
日期:2015-09-18 10:48:1315-16赛季CBA联赛之山西
日期:2016-05-05 00:05:33
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-28 10:35 |只看该作者 |倒序浏览
遇到个问题,如下:

              我想利用TreeView控件在不同的两个控件中显示同一个数据列表

              比如显示学生信息的列表,一个显示完整的,一个显示条件过滤后的,想同时显示两个列表

              求大神给个思路吧,谢谢

论坛徽章:
6
酉鸡
日期:2013-11-04 15:30:02巳蛇
日期:2014-01-23 10:36:23双鱼座
日期:2014-01-23 13:08:332015亚冠之鹿岛鹿角
日期:2015-09-03 14:36:002015亚冠之武里南联
日期:2015-09-18 10:48:1315-16赛季CBA联赛之山西
日期:2016-05-05 00:05:33
2 [报告]
发表于 2012-12-28 15:17 |只看该作者
难道又要沉?

论坛徽章:
6
酉鸡
日期:2013-11-04 15:30:02巳蛇
日期:2014-01-23 10:36:23双鱼座
日期:2014-01-23 13:08:332015亚冠之鹿岛鹿角
日期:2015-09-03 14:36:002015亚冠之武里南联
日期:2015-09-18 10:48:1315-16赛季CBA联赛之山西
日期:2016-05-05 00:05:33
3 [报告]
发表于 2012-12-29 12:52 |只看该作者
  1. #include <stdio.h>
  2. #include <gtk/gtk.h>
  3. #include <glib.h>

  4. enum{
  5.         col_name = 0,
  6.         col_date,
  7.         col_size,
  8.         n_cols
  9. };

  10. void
  11. model_data_new(GtkTreeModel *store, const gchar* name, const char *date, const guint size)
  12. {
  13.         GtkTreeIter iter;
  14.         gtk_list_store_append(GTK_LIST_STORE(store), &iter);
  15.         gtk_list_store_set(GTK_LIST_STORE(store), &iter,
  16.                                                 col_name, name,
  17.                                                 col_date, date,
  18.                                                 col_size, size,
  19.                                                 -1);
  20. }

  21. GtkTreeModel *
  22. create_model()
  23. {
  24.         GtkListStore *store;
  25.         store = gtk_list_store_new(n_cols, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT);

  26.         return GTK_TREE_MODEL(store);
  27. }

  28. void
  29. arrange_tree_view(GtkWidget *view)
  30. {
  31.         GtkCellRenderer *renderer;

  32.         //col 1:name
  33.         renderer = gtk_cell_renderer_text_new();
  34.         gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view), -1, "name", renderer,"text", col_name, NULL);

  35.         //col 2:date
  36.         gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view), -1, "date", renderer, "text", col_date, NULL);

  37.         //col 3:size
  38.         gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(view), -1, "size", renderer, "text", col_size, NULL);
  39. }

  40. int
  41. main (int argc, char **argv)
  42. {
  43.         /*GtkWidget is the storage type for widgets*/
  44.         GtkWidget *window;
  45.         GtkWidget *hbox, *hbox2, *top_hbox;
  46.         GtkWidget *view, *view2;

  47.         /*This is called in all GTK applications. Arguments are pased
  48.          * from the command line and are returned to the application*/
  49.         gtk_init(&argc, &argv);

  50.         window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  51.         gtk_window_set_title(GTK_WINDOW(window), "Tree");
  52.         g_signal_connect(G_OBJECT(window), "destroy", gtk_main_quit, NULL);

  53.         top_hbox = gtk_hbox_new(TRUE, 0);
  54.         gtk_container_add(GTK_CONTAINER(window), top_hbox);

  55.         hbox = gtk_hbox_new(TRUE, 0);
  56.         gtk_container_add(GTK_CONTAINER(top_hbox), hbox);

  57.         hbox2 = gtk_hbox_new(TRUE,0);
  58.         gtk_container_add(GTK_CONTAINER(top_hbox), hbox2);

  59.         view = gtk_tree_view_new();
  60.         gtk_container_add(GTK_CONTAINER(hbox), view);

  61.         view2 = gtk_tree_view_new();
  62.         gtk_container_add(GTK_CONTAINER(hbox2), view2);

  63.         //arrange view columns
  64.         arrange_tree_view(view);
  65.         arrange_tree_view(view2);

  66.         //set model
  67.         GtkTreeModel *store = create_model();
  68.         gtk_tree_view_set_model(GTK_TREE_VIEW(view), store);
  69.         gtk_tree_view_set_model(GTK_TREE_VIEW(view2), store);

  70.         model_data_new(store, "test.c", "2012-12-29", 2224);
  71.         model_data_new(store, "xd.c", "2012-12-29", 454);

  72.         g_object_unref(store);

  73.         gtk_widget_show_all(window);

  74.         /*All GTK application must have a gtk_main(). Control ends here
  75.          * and waits for an event to occur (like a key press or
  76.          * mouse event).*/
  77.         gtk_main();

  78.         return 0;
  79. }
复制代码
暂时完成了个小例子
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP