所以,我有简单的代码
QMap<QColor, int> colors;
for(int w = 0; w < image.width(); ++w)
for (int h = 0; h < image.height(); ++h)
colors[QColor::fromRgb(image.pixel(w,h))]++;
错误信息是
因此, qMapLessThanKey 尝试实例化两种颜色的比较器失败,这是不可能的。
问题是: 是否可以将 QColor 作为键值而不是引用存储在 QMap 中?
只是好奇。我知道如何以其他方式写出我想要的东西。但让我觉得奇怪的是,QT 中有任何异常(exception),我可以在 map 中存储或不能存储什么。
最佳答案
不,因为 QColor
doesn't provide operator<
,它是 required 由 QMap
的 Key
类型:
一种选择是自己为 operator<
定义 QColor
,但我不建议这样做,因为我不确定它是否应该被定义。
我建议仅将 std::map
与自定义比较器(第三个模板参数)一起使用:
struct color_compare {
bool operator()(QColor const&, QColor const&) { /* ... */ }
};
std::map<QColor, Value, color_compare> map;
// ...
关于c++ - 是否可以将 QColor 存储在 QMap 中作为键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32512125/