QLcdNumber 奇怪的行为

Posted

技术标签:

【中文标题】QLcdNumber 奇怪的行为【英文标题】:QLcdNumber strange behavior 【发布时间】:2013-10-27 12:08:56 【问题描述】:

嗯,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 字段是什么类型的? 这就是我在调试模式下得到的。数字的类型是浮点数。 另一个(最终)猜测可能是 number 在其他线程中被更改。 【参考方案1】:

服务器也错误地向我发送了第二个数据包。所以,第二个数据包在没有注意到的情况下覆盖了液晶显示器!很抱歉耽误您的时间。

干杯。

【讨论】:

以上是关于QLcdNumber 奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

更改 QLcdNumber 文本的颜色 [重复]

QT软件开发之基础控件--2.5.3 QLCDNumber 数码管控件

如何在 PyQT5 上更新 QLCDNumber 的值?

Qt 使用 QLCDNumber 制作计时器

使用 processEvents() 更新 QLCDNumber - Python 3

Qt5中用QLCDNumber显示时间