所以,我有简单的代码

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< ,它是 requiredQMapKey 类型:



一种选择是自己为 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/

10-11 23:11