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的十进制行为会有点烦人。对于小数,有大量的小数,并且显示的位数取决于值是否相对均匀(例如1500000或151231231)
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
因此,对于一个平滑的视觉而不是跳跃的LCD数字,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
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 将"打开的CV图像"中的"颜色"转换为整数格式
- TDateTime格式在C++Builder中不会更改
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 检查不带转换的扫描格式
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 是否可以从格式字符串中检索"width"
- clang格式:宏的缩进
- clang格式:禁用排序包含
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 将RGB图像保存为PPM格式
- 询问在设计我的手臂模拟器功能表示格式1
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 如何将strftime中的格式错误作为异常捕获
- 将CHW格式的浮点向量转换为cv::Mat
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 如何以叮当格式设置评论的行长?
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- Vulkan 中的动态顶点缓冲区格式设置