Я пытаюсь проверить ввод пользователя с помощью функции 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
для выдачи сообщения об ошибке, если оно ложно, с целью только разрешитьпользователи вводят действительные целые или десятичные числа.Проблема в том, что сообщение всегда верным, даже если слова введены.Вот мой код:
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()
преобразует буквы в значения.
Может кто-нибудь объяснить, где я ошибся?