QLcdNumber странное поведение

Итак, значение QLcdNumber устанавливается с помощью свойства display(). Впервые работа с QLcdNumber показывает странное поведение. Рассмотрим этот пример:

void MainWindow::dataFromUdp(QByteArray pack)
{
    if(pack.at(0) == '!')
    {
        unsigned long x;

        x = (unsigned char)pack[pack.length() -1] +
                (unsigned char)pack[pack.length() -2] * 256 +
                (unsigned char)pack[pack.length() -3] * 256 * 256 +
                (unsigned char)pack[pack.length() -4] * 256 * 256 * 256;

        //extract packet

        if(x == crcCalculate(0, pack.length() - 4, pack))  
        {
            //CRC is correct

            if(pack[1] == 0x0d)
            {
                number = 0;   // class member variable
                char value[6];
                sprintf(value,"%c%c%c%c%c", (char)pack[2],(char)pack[3],(char)pack[4],
                        (char)pack[5],(char)pack[6]);  

//Now value = 00125

                number = atoi(value)/1000.0;

//Now value is 0.125

                ui->lcd_range->display(number);

                qDebug() << number;

//Here qDebug() and qlcd both show -3.6xx

у тебя есть идеи?


person Sam    schedule 27.10.2013    source источник
comment
Вы уверены, что value = 00125? QLcdNumber::display() вызов не может изменить номер, так как параметр передается ему по значению. Кроме того, какого типа поле number?   -  person VVV    schedule 27.10.2013
comment
это то, что я получаю в режиме отладки. тип числа плавающий.   -  person Sam    schedule 27.10.2013
comment
Еще одно (последнее) предположение: возможно, number изменено в другом потоке.   -  person VVV    schedule 27.10.2013


Ответы (1)


Сервер также отправлял мне второй пакет по ошибке. Итак, второй пакет незаметно для глаза перезаписал ЖК! Прошу прощения, что отнял у вас время.

Ваше здоровье.

person Sam    schedule 27.10.2013