QLcdNumber 设置固定格式

QLcdNumber set fixed format

我想知道是否有一种方法可以将 QLcdNumber 小部件设置为具有固定的格式宽度。例如,我想将小部件设置为始终在昏迷前显示 3 个数字,在昏迷后显示 2 个:

000.00
001.00
120.50
100.25
etc.

有办法吗?我会感谢所有帮助。

可能没有您想要的那么简单,但是这个可行:

lcdNumber->setDigitCount(6);

...

double d = 1.2;
int i = d;
lcdNumber->display(QString("%1").arg(i, 3, 10, QChar('0'))
                   + "."
                   + QString("%1").arg(qRound((d - i) * 100), 2, 10, QChar('0')));

我在该地区的一些发现和行为。

如果smalDecimalPoint设置为False,小数点算作一个数字。 如果您向 display() 提供双精度值,尾随的“0”小数点将被截断(参见下面的代码示例)。

QLcdNumber 的十进制行为有点烦人,如果小部件采用大双精度(== 许多数字正在播放)并快速更新。对于小数,小数位数较多,显示的位数取决于该值是否相对偶数(例如 1,500000 或 1,51231231)

double d = 1.2300000;
lcdNumber->setDigitCount(6);
lcdNumber->display(d);
// Result 1.23 -- not 1.2300 as wanted/expected...

d = 12.3456789;
lcdNumber->display(d);
// Result 12.345  -- six digits including decimal point

lcdNumber->smalDecimalPoint = false;
lcdNumber->display(d);
// Result 12.3456 -- six digits excluding decimal point

所以为了流畅的视觉效果而不是跳动的 LCDnumber,Amartel 提出的解决方案是唯一的方法...

// well, there is always an other way
// Old school
double d = 1.23456789
char buffer[7];
sprintf(buffer, "%03.02f", d);
lcdNumber->display(QString(buffer));
// Have not test this, but should work :-/, but that is a bit c-old-style-not-so-safe :-)
// might need to cast the buffer to be accepted for QString