関数を使用してユーザー入力を検証しようとしてい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
そのため、ユーザーが有効な整数または小数のみを入力できるようにする目的で、 false の場合にエラーメッセージをスローするために を使用しようとしていました。問題は、単語が入力されてもメッセージが常に有効であることです。これまでの私のコードは次のとおりです。
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()
関数は文字を値に変換しています。
誰かが私が間違っている場所を説明できますか?