C++ 行编辑setText函数Qt

C++ 行编辑setText函数Qt,c++,qt,rounding,settext,C++,Qt,Rounding,Settext,我有一个LineEdit,我希望它显示一个float值。我希望float值具有2位精度,因此我使用了如下数字函数: float tax = value * 0.23; Qstring strTax = QString::number(tax, 'f', 2); qDebug() << strTax; ui->leTax->setText(strTax); 浮动税=价值*0.23; Qstring strTax=Qstring::number(tax,'f',2); q

我有一个
LineEdit
,我希望它显示一个
float
值。我希望
float
值具有2位精度,因此我使用了如下数字函数:

float tax =  value * 0.23;
Qstring strTax = QString::number(tax, 'f', 2);
qDebug() << strTax;
ui->leTax->setText(strTax);
浮动税=价值*0.23;
Qstring strTax=Qstring::number(tax,'f',2);
qDebug()leTax->setText(strTax);

问题是,当在控制台中以2位精度打印值时,小部件打印所有可能是3位或更多的十进制数字(取决于值)。有办法解决吗?我使用的是Qt5.0。

setValidator可能是您的解决方案。点击并

将此行编辑设置为仅接受验证器v将接受的输入。这允许您在可能输入的文本上放置任意约束

另外,使用
setDecimals()
设置小数位数

所以,它应该是这样的:

// bottom (-999.0), top (999.0), decimals (2)
lineEdit->setValidator(new QDoubleValidator(-999.0, 999.0, 2, lineEdit));

我没有QString::number()的浮点版本,所以可能尝试将cast转换为double

ui->leTax->setText(QString::number((double)tax, 'f', 2));

但是由于qDebug()已经显示了正确的值,您可能会在代码中的其他地方更改strTax。

因此这是公认的答案。我终于解决了我的问题。
onTextUpdate
必须更新另外两个
LineEdits
一个包含税款,另一个包含总金额。但是包含
总金额的那一个也发出了
contextchanged
来更新净值和税收
行编辑
,而没有四舍五入值(我很粗心!!)。因此,我更正了
totalAmount
onTextChanged
。我还更新了它,检查它是否有焦点,以便知道是否轮到它更新其他
LineEdits
或不:)。关键是有人可以编辑
netValue
行编辑,这将更新税额和总金额,或者有人输入
totalAmount
并自动更新净额和税额字段。现在一切正常。谢谢大家的回答

首先,谢谢你的回答……但是没有用。我就是这样做的:浮点fpa=value*0.23;QString lnvalue=QString::number(fpa,'f',2);ui->leTax->setValidator(新的QDoubleValidator(-999.0999.0,2,ui->leTax));ui->leTax->setText(QString::number(fpa));如何显示编译和运行的实际代码?QLineEdit无法添加一些额外的数字。正如Roku所说,代码中的某个地方有一个bug。请发布您实际编译和运行的代码。您上面发布的代码甚至没有编译(带有非大写s的Qstring将给您一个编译时错误);DR:这个问题没有提供重现问题所需的代码。
ui->leTax->setText(QString::number((double)tax, 'f', 2));