Russian Qt Forum
Ноябрь 25, 2024, 09:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]Замена значений в QMap  (Прочитано 4820 раз)
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);
    }
}

Подскажите, где может быть ошибка? Спасибо.
« Последнее редактирование: Сентябрь 14, 2015, 13:16 от Larry » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 14, 2015, 12:44 »

Код
C++ (Qt)
PARAMETER &t_param = i_params.next();
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Larry
Гость
« Ответ #2 : Сентябрь 14, 2015, 12:46 »

Код
C++ (Qt)
PARAMETER &t_param = i_params.next();
 
Спасибо, но такой вариант выдает ошибку в этой строке:
error C2440: инициализация: невозможно преобразовать "const PARAMETER" в "PARAMETER &"
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Сентябрь 14, 2015, 12:50 »

Тьфу, не заметил, что оно консты возвращает. Тогда тебе QVectorIterator не подойдет. Ты меняешь объект t_param, который является копией объекта из вектора.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Larry
Гость
« Ответ #4 : Сентябрь 14, 2015, 12:52 »

А подскажите, как в этом случае делать? Спасибо.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Сентябрь 14, 2015, 12:56 »

Код
C++ (Qt)
for (auto it = m_points.begin(), end = m_points.end(); it != end; ++it {
............
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Larry
Гость
« Ответ #6 : Сентябрь 14, 2015, 12:59 »

Спасибо, сейчас попробую.
Записан
Larry
Гость
« Ответ #7 : Сентябрь 14, 2015, 13:15 »

Код
C++ (Qt)
for (auto it = m_points.begin(), end = m_points.end(); it != end; ++it {
............
}
 
Большое спасибо, это работает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.206 секунд. Запросов: 23.