Функция редактирования строки setText Qt

у меня есть 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.

0

Решение

Так что это принятый ответ. Я наконец решил свою проблему. onTextUpdate пришлось обновить еще два LineEdits один, содержащий налог, и один, содержащий общую сумму. Но тот, который содержит totalAmount также испустил onTextChanged обновить чистую стоимость и налог LineEdits, не округляя значения (Я был неосторожен !!). Поэтому я исправил totalAmount«s onTextChanged, Я также обновил его, чтобы проверить, есть ли у него фокус, чтобы узнать, не пора ли ему обновить другой LineEdits или нет :). Дело в том, что кто-то может редактировать netValue редактировать строку, и это обновит налог и общую сумму, или кто-то введет totalAmount и это автоматически обновит чистую сумму и налоговое поле. Все работает сейчас. Спасибо всем за ответы!

1

Другие решения

У меня нет float-версии для QString :: number (), поэтому, возможно, попробуйте приведение к двойному

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

Но поскольку qDebug () уже показывает правильное значение, вы, вероятно, измените свой strTax где-то еще в коде.

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));
0
По вопросам рекламы [email protected]