QString::toDouble()
関数を使用してユーザー入力を検証しようとしています。Qstring :: toDoubleを使用する
double QString::toDouble (bool * ok = 0) const;
/*
Returns the string converted to a double value.
Returns 0.0 if the conversion fails.
If a conversion error occurs, *ok is set to false; otherwise *ok is set to true.
*/
だから私は唯一のユーザーは、有効な整数または小数を入力することを可能にする目的で、その偽の場合、エラーメッセージをスローするように*ok
を使用しようとしていた:documentationは、関数は次のように使用すべきであると言います。問題は、単語が入力されてもメッセージが常に有効であることです。ここに私のコードは、これまでのところです:
void MainWindow::checkData()
{
bool validate;
QString tempStr;
tempStr = ui->lineEditValidate->text();
double converted = tempStr.toDouble(&validate);
if (validate = false)
{
QErrorMessage validateError;
validateError.showMessage("Input is Invalid");
validateError.exec();
}
else
{
QErrorMessage worksFine;
worksFine.showMessage("valid");
worksFine.exec();
}
}
私はきちんとvalidate
引数を渡すことではないのですが、ドキュメントは、私が実際に知っているために十分な固体ではない気がします。多分QString::toDouble()
関数は文字を値に変換しています。
誰かが間違っていた場所を説明できますか?それと
ユーザーが「NaN」または「Inf」と入力し、その倍数が小数点以下にならない場合、「ok」がtrueになります。おそらく、数値が有限であることを保証する第2の検証レイヤーが必要になるでしょう。 – cgmb