QString加倍

时间:2017-04-28 17:38:49

标签: qt

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板上运行。

1 个答案:

答案 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

希望有所帮助。