gpt4 book ai didi

qt - 使用 Qstring::toDouble 来检查数据

转载 作者:行者123 更新时间:2023-12-02 06:21:20 25 4
gpt4 key购买 nike

我正在尝试使用 QString::toDouble() 函数验证用户输入。 documentation说该函数应该像这样使用:

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()函数正在将字母转换为值。

有人可以解释一下我哪里出了问题吗?

最佳答案

if (validate = false)
// ^ problem! this is an assignment

这样,您就可以系统地将 validate 设置为 false,并测试该分配的结果 - 这也是 false

这是不正确的。您需要:

if (validate == true) {
// ^^ comparison here
// conversion worked
} else {
// conversion failed
}

更常见的是省略 bool 测试的比较:

if (valid) { // do stuff if valid ...

或者:

if (!valid) { // do stuff if not valid ...

您的变量最好命名为valid,或conversionOk或类似的名称。它不是一个操作,也不指示某些内容是否需要验证,而是指示该操作/验证的结果。

关于qt - 使用 Qstring::toDouble 来检查数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com