我尝试了此代码,但QString
仍然存在短值问题,例如它适用于text = 20
,但它返回0
表示值= 20.5
。
但我需要值= 20
。我怎么解决呢?
inline __int16 GetStaticToInteger(QLineEdit* lineEdit) {
QString text; __int16 nValue = 0;
nValue = QString::number(lineEdit->text().toDouble()).toShort();
return nValue;
}
答案 0 :(得分:2)
'20 .5'不是整数值的有效文本表示。你可以查看:
QString str("20.5");
bool ok;
short s = str.toShort(&ok);
qDebug() << ok
输出将为“false”。
如果您需要整数值,可以执行以下操作:
short s = str.toDouble();
如果您需要将值四舍五入到最接近的整数,请使用qRound
:
short s = qRound(str.toDouble());
答案 1 :(得分:1)
你已经变得复杂了。
inline __int16 GetInteger16FromStatic(QLineEdit* lineEdit) {
QString text; __int16 nValue = qRound(lineEdit->text().toDouble());
return nValue;
}
此外,Qt提供了定义大小的类型,例如qint16
与编译器/平台无关,因此您不必使用__int16
。