• 5952阅读
  • 4回复

如何获取多个对象的共同属性 [复制链接]

上一主题 下一主题
离线biggerdog
 
只看楼主 正序阅读 楼主  发表于: 2010-12-27
— 本帖被 XChinux 执行加亮操作(2011-01-18) —
关键词: QT4
请问 如果有多个对象时,如何获取它们的共同属性;当属性相同时,如何得到它们的相同属性值
离线biggerdog
只看该作者 4楼 发表于: 2010-12-28
    首先感谢killerls的回答。

  利用基类的方法,我是考虑过的。但是我还需要考虑自定义的属性问题,所以基类的方法就没有采用了。

  killerls采用bit数组记录属性是否存在,然后再进行bit的与运算来寻找共同属性,是不错的一个想法,但是同样面临我上面说的自定义属性问题。
离线killerls

只看该作者 3楼 发表于: 2010-12-28
嘿嘿, 一个参考意见,提个思路。
把所有的常见属性排序,并将每个属性的序列号固定,然后将所有属性和bool数组的相应元素对应,每个对象如果存在该属性,则相应元素为TRUE。
当选中多个图元时,直接获取所有图元的bool数组,按序列与计算,然后结果数组为true的元素对应的属性是所有图元都拥有的属性,最后再比较该的属性是否相同。
可以考虑将所有的图元从同一个基类继承,把该数组放在基类中实现比较方便的bool数组元素增加。
这样的处理方法,相对楼主的方案,在确定共同拥有的图元时,会有一个相对固定的比较时间,但不一定比楼主的快。
离线biggerdog
只看该作者 2楼 发表于: 2010-12-27
1. 建立一个列表;
2. 读入第一个对象的所有属性和属性值;
3. 然后将列表中的属性依次和其他对象的属性进行比较,
   如果不存在,remove该属性
      如果存在,再比较属性值
     如果属性值相同,保留
     如果属性值不同,属性值置空

上面是我的想法,是否只能这样做?有没有更简便的方法?

ps: 我是做图形编辑时,选中多个图元时,希望属性列表中显示的是多个图元的共同属性,如果多个图元的某个共同属性的属性值不同的话,则属性值位置不显示任何值。
离线xtfllbl

只看该作者 1楼 发表于: 2010-12-27
你想做什么,没什么取巧的方法,具体问题具体处理。
上海欢迎您
快速回复
限100 字节
 
上一个 下一个