QT:QHash的使用

it2022-05-09  25

QHash<QPointF, QVector<float>> data;

此时会报错说没有声明QPointF的Key类型

需要我们手动实现一个函数

static uint qHash(const QPointF& key, uint seed) {    int val = static_cast<int>(key.x());    return qHash<int>(val, seed);}

数据的插入,插入QHash<QPointF, QVector<float>>类型的数据

  data.insert(QPointF(0.0, 1.0),   {0.0, 0.3, 0.7, 1.0});  data.insert(QPointF(1.0, 2.0),   {0.0, 0.7, 1.3, 2.0});  data.insert(QPointF(2.0, 4.0),   {0.0, 1.3, 2.7, 4.0});  data.insert(QPointF(4.0, 6.0),   {0.0, 2.0, 4.0, 6.0});

数据的查找 输入一个浮点型数,判断这个浮点型数在不在Key的区间,如果在,就返回Value

QVector<float> ClassName::getDataValue(qreal maxValue, QHash<QPointF, QVector<float>> &data) {    for (QHash<QPointF, QVector<float>>::iterator it = data.begin(); it != data.end(); ++it) {        if ((it.key().x() < maxValue) && (maxValue < it.key().y() + FLOAT_ACCURACY)) {            return it.value();        }    }    return QVector<float>();}

FLOAT_ACCURACY:0.00001;用来浮点型数据的比较

转载于:https://www.cnblogs.com/qianqiannian/p/9585741.html


最新回复(0)