Qt 加倍
将“23”作为Qt 加倍,qt,Qt,将“23”作为fhStr传递确定的计算结果始终为假,即转换后的值(d)从未分配给m_新值 这里有什么问题吗?使用交叉编译器在ARM板上运行。 您的字符串中可能有一些额外的信息。使用qDebug()查看发生了什么: void setNewValue(const QString& fhStr) { bool ok(false); double d = fhStr.toDouble(&ok); if (ok) { m_newValue = d; } } #
fhStr
传递<代码>确定的计算结果始终为假,即转换后的值(d
)从未分配给m_新值
这里有什么问题吗?使用交叉编译器在ARM板上运行。
您的字符串中可能有一些额外的信息。使用qDebug()查看发生了什么:
void setNewValue(const QString& fhStr)
{
bool ok(false);
double d = fhStr.toDouble(&ok);
if (ok) {
m_newValue = d;
}
}
#包括
// ...
void setNewValue(常量QString和fhStr)
{
布尔ok(假);
双d=fhStr.toDouble(&ok);
如果(确定){
m_newValue=d;
}
qDebug()您希望在代码中发生什么?从Qt POV来看,这一切都是正确的。对于您的测试用例,当通过“23”时,是toInt()而不是toDouble()也会将ok设置为false?@MrEricSirok
的计算结果为true
,但仍然m_值
未被更新。
#include <QDebug>
// ...
void setNewValue(const QString& fhStr)
{
bool ok(false);
double d = fhStr.toDouble(&ok);
if (ok) {
m_newValue = d;
}
qDebug() << fhStr << ok << m_newValue;
}