Qt5: lineEdit Не учитывается значение с запятой

104
11 декабря 2020, 07:10

Есть некоторая форма на которой есть lineEdit.

Для этого поля задан валидатор QDoubleValidator(0, 100000, 4) Проблема такая: при вводе в поле вещественного значения(а оно представляется в виде 1234,1234 т.е. с запятой) данное значение чудным образом обращается в ноль. Целые же обрабатываются корректно. Я написал суррогатный пример для демонстрации этой аномалии:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QValidator>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->lineEdit->setValidator(new QDoubleValidator(0, 100000, 4));
}
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::on_pushButton_clicked()
{
    double _sPrice;
    _sPrice = ui->label->text().toDouble();
    //label располагается над LineEdit'oм
    _sPrice += ui->lineEdit->text().toDouble();
    ui->label->setText(QString::number(_sPrice));
}

Вопрос №1: В чём может быть дело? Как поправить? Вопрос №2: В чём смысл top значения у QDoubleValidator? Как я понял, он по QValidator::Acceptable не пропускает значения вне диапазона [bottom, top];

Изображения с наглядным представлением аномалии:

Answer 1

Проблема была из-за запятой. Заменив её точкой, строка преобразовывается в double.

void MainWindow::on_pushButton_clicked()
{       
    double _sPrice;
    _sPrice = ui->label->text().toDouble();
    QString _strLineEditPrice = ui->lineEdit->text().replace(',', '.');
    _sPrice += _strLineEditPrice.toDouble();
    ui->label->setText(QString::number(_sPrice, 'g', 10));
}
READ ALSO
Запись и чтение объекта из бинарного файла

Запись и чтение объекта из бинарного файла

Неправильно записывает и читает из файлаЗаписывает age = 5и Name = "Масло", а выводит age=0 и Name = ""

113
Иероглифы вместо русского текста в коде

Иероглифы вместо русского текста в коде

Переустановил Windows, поставив английскую версию (United States)После этого все файлы кода в Visual Studio, которые были написаны на русской версии, искажены,...

87
Qt5: как понять на каком из lineEdit стоит фокус

Qt5: как понять на каком из lineEdit стоит фокус

На форме есть 2 lineEdit'aЕсть на форме куча кнопок а-ля цифровая клавиатура (делаю десктоп-приложение с адаптацией под тачскрины)

122
формане отправляет input

формане отправляет input

В POST отбражается только sumbitтоли лыжи не едут,толи

106