0

我有一个LineEdit我希望它呈现float价值的东西。我希望该float值具有 2 位精度,所以我使用了这样的数字函数:

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

问题是,虽然在控制台中以 2 位精度打印值,但小部件会打印所有可能为 3 或更多的十进制数字(取决于值)。有没有办法解决它?我正在使用 Qt 5.0。

4

3 回答 3

1

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

于 2013-07-16T15:35:53.303 回答
0

setValidator可能是你的解决方案。点击这里这里

void QLineEdit::setValidator ( const QValidator * v )

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

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

所以,它应该是这样的:

// bottom (-999.0), top (999.0), decimals (2)
lineEdit->setValidator(new QDoubleValidator(-999.0, 999.0, 2, lineEdit));
于 2013-07-15T17:24:44.087 回答
0

我没有 QString::number() 的浮点版本,所以也许可以试试 cast-to-double

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

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

于 2013-07-16T05:55:07.727 回答