qstring为qlineedit的短格式

时间:2014-01-15 10:03:13

标签: qt qstring qlineedit

我尝试了此代码,但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;
}

2 个答案:

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