Итак, значение 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
у тебя есть идеи?
value = 00125
?QLcdNumber::display()
вызов не может изменить номер, так как параметр передается ему по значению. Кроме того, какого типа полеnumber
? - person VVV   schedule 27.10.2013number
изменено в другом потоке. - person VVV   schedule 27.10.2013