我正在尝试使用该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()
函数正在将字母转换为值。
有人可以解释我哪里出错了吗?