【问题标题】:Using QGraphicsItem as key for QHash使用 QGraphicsItem 作为 QHash 的键
【发布时间】:2014-03-24 15:53:23
【问题描述】:

在我开始使用这种数据类型之前,由于我是 Qt 的初学者,是否可以使用 QGraphicsItem 作为 QHash 的键?声明如下内容似乎是合法的:

QHash<QGraphicsItem*, someType> hashName;

所以我想这是允许的。

谢谢。

【问题讨论】:

  • 是的,完全没问题。请注意,当您删除一个图形项时,您应该手动从哈希中删除指向它的指针。
  • 谢谢。这样做是有道理的,因为我猜密钥只是一个数字,而不是区域指针。

标签: qt qhash


【解决方案1】:

是的。但是我会使用QMap&lt;QGraphicsItem*, someType&gt;,但这并没有太大区别。此外,您可以继承 QGraphicsItem 以将数据附加到项目。

【讨论】:

  • 这里使用QMap 没有意义:在QMap 中按键查找速度较慢,并且按指针排序没有任何意义。也可以通过QGraphicsItem::setData 将数据附加到项目,而无需子类化QGraphicsItem
  • 我认为使用哈希需要在访问、迭代和插入值时计算键的哈希(在 QHash 实现中,在幕后)。或者以某种方式优化散列 int/指针?
  • 散列指针是微不足道的,在 Qt 中以reinterpret_cast&lt;quintptr&gt;(key) ^ seed 执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多