为这个字段设置了一个验证器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:可能出了什么问题?怎么修?问题二:QDoubleValidator 的最高值是什么意思?据我了解,根据QValidator::Acceptable,它不会跳过[bottom, top]范围之外的值;



问题是因为逗号。通过用点替换它,字符串被转换为
double.