分页: 1 / 2

GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 10:59
R-man
GtkListStore可以插入一行一行的数据,可是我现在想根据一行的第一列数据的值找到这一行数据。找到它的指针。

比如有一下一个列表
名字 分数
chao 60
xiaom 100
defei 90
我知道了xiaom这个名字想在列表中找它的分数,怎样获得指向xiaom 100的iter才能读取它的分数值?
我知道了xiaom这个名字,我想把它从列表中删除怎么做呢?

怎样查找指定值在列表中的位置呢?
难道要自己遍历吗?

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 11:17
zhw2101024
这种问题为什么不用<key,value>这样的结构呢,gtk应该可以用这样的结构做数据源吧。只是猜的,反正Qt是可以这样做的,数据跟界面可以完全分开,数据变化之后界面实时更新。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 12:18
R-man
zhw2101024 写了:这种问题为什么不用<key,value>这样的结构呢,gtk应该可以用这样的结构做数据源吧。只是猜的,反正Qt是可以这样做的,数据跟界面可以完全分开,数据变化之后界面实时更新。
GTK 的列表是MVC模式的。就是没有找到<key.value>
MVC数据和数据显示是分开的。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 13:40
eexpress
GtkListStore 上次也搞晕了。似乎不能根据单独的数字/字符串(结果)去定位项目。
get_selected_items没有反推的函数。
你可以去stackoverflow问问。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 13:42
zhw2101024
R-man 写了:
zhw2101024 写了:这种问题为什么不用<key,value>这样的结构呢,gtk应该可以用这样的结构做数据源吧。只是猜的,反正Qt是可以这样做的,数据跟界面可以完全分开,数据变化之后界面实时更新。
GTK 的列表是MVC模式的。就是没有找到<key.value>
MVC数据和数据显示是分开的。
如果查找用的比较多的话,可以考虑哈希表,网上有很多C语言实现哈希表的代码,或者标准库函数里面找找有没有哈希表的,没有谁逼着你非得用GTK的函数。使用C语言一个很大的好处是可以非常方便的添加自己的算法。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 13:46
eexpress
zhw2101024, 当你使用控件的时候,尤其iconview的时候,别想有另类的数据结构可以代替了。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 14:07
zhw2101024
eexpress 写了:zhw2101024, 当你使用控件的时候,尤其iconview的时候,别想有另类的数据结构可以代替了。
学习了,没用过GTK,就用过QT。有些QT里的东西也不好弄,比如日历控件很难自定义,当时头疼了好久。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 14:08
eexpress
日历控件,我一直有继承出一个新控件的冲动。。
的确。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 14:35
supercatexpert
自己实现一个GtkTreeModel的类,俺就是这么做的。
否则乃就需要遍历来寻找了

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 14:42
eexpress
自己实现啊。最无奈的方法了。看到过一些自己实现iconview的。

遍历也不能对item设置selected的状态吧。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 14:46
zhw2101024
我在Qt很少用Widget的,自己用Model实现的居多,感觉自由一点。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 14:50
R-man
supercatexpert 写了:自己实现一个GtkTreeModel的类,俺就是这么做的。
否则乃就需要遍历来寻找了
这个压力好大,不知的它的类是怎么实现的,没看过源码

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 15:06
zhw2101024
R-man 写了:
supercatexpert 写了:自己实现一个GtkTreeModel的类,俺就是这么做的。
否则乃就需要遍历来寻找了
这个压力好大,不知的它的类是怎么实现的,没看过源码
不知道文档里有没有相关的内容,先别急着看源码。GtkTreeModel应该有扩展的接口。

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-20 15:12
supercatexpert
GtkTreeModel本来就不是一个类,而是 接口
可以参考GtkListStore来写,它是实现了GtkTreeModel接口的一个类

Re: GTK怎样根据值找到列表控件中指定的一行?

发表于 : 2012-12-21 9:07
R-man
supercatexpert 写了:GtkTreeModel本来就不是一个类,而是 接口
可以参考GtkListStore来写,它是实现了GtkTreeModel接口的一个类
我正好用listStore啊,GTK用C实现面向对象,搞的我不知到怎么按照它的样子实现类和继承了