void setNewValue(const QString& fhStr)
{
bool ok(false);
double d = fhStr.toDouble(&ok);
if (ok) {
m_newValue = d;
}
}
传递" 23"作为fhStr
; ok
始终评估为false,即转换后的值(d
)永远不会分配给m_newValue
这里有什么不对吗?使用交叉编译器在ARM板上运行。
答案 0 :(得分:1)
http://doc.qt.io/qt-5/qstring.html#toDouble
你的字符串中可能还有一些额外的信息。使用qDebug()查看发生了什么:
#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;
}
如果您要从字符串中删除其他信息,请使用QRegularExpression或.strip()
或其他字符串运算符来获取该数字。
http://doc.qt.io/qt-5/qregularexpression.html#details
另请参阅QValidators。
http://doc.qt.io/qt-5/qvalidator.html#details http://doc.qt.io/qt-5/qtwidgets-widgets-lineedits-example.html
希望有所帮助。