仅在qlineedit中写入float值
Write only float values in QLineEdit
如何在范围(0.0-5.0)的QLineEdit
浮点数中写入?我使用qregexp进行此类任务,例如QRegExp a("([a-zA-Z]{3,30})")
来编写用户名,但没有想法编写浮点数。
最好的选择是将QDoubleValidator
用于此类任务,因为它不仅会验证输入的 shape EM>:
auto dv = new QDoubleValidator(0.0, 5.0, 2); // [0, 5] with 2 decimals of precision
yourLineEdit->setValidator(dv);
如果您要处理许多小数(或者打算将范围更改为更宽的小数),则可能有兴趣禁用科学符号:
dv->setNotation(QDoubleValidator::StandardNotation);
另一方面,由于您要求提供正则表达式以来的答案,因此浮点数为 [-+]?[0-9]*.?[0-9]+
,因此,对于您的特定范围,您可以尝试: ([0-4]?.[0-9]+)|(5.0+)|([0-5])
。无论如何,我建议使用验证器,因为如果范围通过项目或运行时范围更改,则延伸更难扩展。
使用正则划分并分解范围,0.0-5.0将是:
[0-4].d|5.0
扩展
# 0.0 to 4.9
[0-4] . d
|
# 5.0
5 . 0
相关文章:
- Qt和C++:将QLineEdit添加到QTabWidget中
- 如何从QToolBox中动态创建的QLineEdit中获取文本
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 没有从阵列<float>到阵列<int>的可行转换
- 数组下标的类型"float*[float]"无效
- 没有合适的构造函数可以从"float"转换为"_D3DCOLORVALUE"
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 将 **float array 从 C++ Dll 传递给 python
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- float* 已在 Gameobject.obj 中定义
- 如何将 qml 的文本转换为 float 和 int
- 为什么将 1 添加到 numeric_limits<float>::min() 返回 1?
- 有没有比static_cast更优雅的从int到float的演员阵容<float>?
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- OPENCL 警告:不兼容的指针类型将'float __global[16]'传递给类型为 '__global float4 的参数 *
- 错误:无法将"float*"转换为"float"
- 如何在函数中将字符串和分数存储为(Int 或 float)
- Qt 5 应用程序崩溃并出现"qLineEdit::setText"
- 缩小从double到float的转换
- 仅在qlineedit中写入float值