у меня есть 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.
Так что это принятый ответ. Я наконец решил свою проблему. onTextUpdate
пришлось обновить еще два LineEdits
один, содержащий налог, и один, содержащий общую сумму. Но тот, который содержит totalAmount
также испустил onTextChanged
обновить чистую стоимость и налог LineEdits
, не округляя значения (Я был неосторожен !!). Поэтому я исправил totalAmount
«s onTextChanged
, Я также обновил его, чтобы проверить, есть ли у него фокус, чтобы узнать, не пора ли ему обновить другой LineEdits
или нет :). Дело в том, что кто-то может редактировать netValue
редактировать строку, и это обновит налог и общую сумму, или кто-то введет totalAmount
и это автоматически обновит чистую сумму и налоговое поле. Все работает сейчас. Спасибо всем за ответы!
У меня нет float-версии для QString :: number (), поэтому, возможно, попробуйте приведение к двойному
ui->leTax->setText(QString::number((double)tax, 'f', 2));
Но поскольку qDebug () уже показывает правильное значение, вы, вероятно, измените свой strTax где-то еще в коде.
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));