Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Larry от Сентябрь 14, 2015, 12:39



Название: [РЕШЕНО]Замена значений в QMap
Отправлено: Larry от Сентябрь 14, 2015, 12:39
Добрый день, форумчане.
Возникла проблема. Есть QMap<QString, QVariant>, заполняется из файла. После этого мне необходимо пересчитать некоторые значения, н-р: значение хранится в hex, а я хочу, чтобы оно хранилось в float, но после расчета нового значения я его вставляю обратно и ничего не меняется....
Код:
void CGpsDevice::format()
{
    QVectorIterator<PARAMETER> i_params(m_points);

    while(i_params.hasNext())
    {
        PARAMETER t_param = i_params.next();
        bool      ok;
        float t_lfuel = ADCToLiter(t_param["fuel"].toString().toInt(&ok, 16));

        if(ok)
            t_param["fuel"] = QString::number(t_lfuel);
    }
}

Подскажите, где может быть ошибка? Спасибо.


Название: Re: Замена значений в QMap
Отправлено: Пантер от Сентябрь 14, 2015, 12:44
Код
C++ (Qt)
PARAMETER &t_param = i_params.next();
 


Название: Re: Замена значений в QMap
Отправлено: Larry от Сентябрь 14, 2015, 12:46
Код
C++ (Qt)
PARAMETER &t_param = i_params.next();
 
Спасибо, но такой вариант выдает ошибку в этой строке:
error C2440: инициализация: невозможно преобразовать "const PARAMETER" в "PARAMETER &"


Название: Re: Замена значений в QMap
Отправлено: Пантер от Сентябрь 14, 2015, 12:50
Тьфу, не заметил, что оно консты возвращает. Тогда тебе QVectorIterator не подойдет. Ты меняешь объект t_param, который является копией объекта из вектора.


Название: Re: Замена значений в QMap
Отправлено: Larry от Сентябрь 14, 2015, 12:52
А подскажите, как в этом случае делать? Спасибо.


Название: Re: Замена значений в QMap
Отправлено: Пантер от Сентябрь 14, 2015, 12:56
Код
C++ (Qt)
for (auto it = m_points.begin(), end = m_points.end(); it != end; ++it {
............
}
 


Название: Re: Замена значений в QMap
Отправлено: Larry от Сентябрь 14, 2015, 12:59
Спасибо, сейчас попробую.


Название: Re: Замена значений в QMap
Отправлено: Larry от Сентябрь 14, 2015, 13:15
Код
C++ (Qt)
for (auto it = m_points.begin(), end = m_points.end(); it != end; ++it {
............
}
 
Большое спасибо, это работает.