【问题标题】:qstring to short format for qlineeditqstring 到 qlineedit 的短格式
【发布时间】:2014-01-15 10:03:13
【问题描述】:

我尝试了这段代码,但对于 QString 到短值仍然有问题,例如它适用于 text = 20 但它返回 0 for value = 20.5

但我需要价值=20。我该如何解决?

inline __int16 GetStaticToInteger(QLineEdit* lineEdit) {
    QString text; __int16 nValue = 0;
    nValue = QString::number(lineEdit->text().toDouble()).toShort();
    return nValue;
}

【问题讨论】:

标签: qt qstring qlineedit


【解决方案1】:

'20.5' 不是整数值的有效文本表示。你可以检查一下:

QString str("20.5");

bool ok;
short s = str.toShort(&ok);

qDebug() << ok

输出将为“假”。

如果你需要一个整数值,你可以这样做:

short s = str.toDouble();

如果您需要将值四舍五入到最接近的整数,请使用 qRound:

short s = qRound(str.toDouble());

【讨论】:

    【解决方案2】:

    你把事情弄得很复杂。

    inline __int16 GetInteger16FromStatic(QLineEdit* lineEdit) {
        QString text; __int16 nValue = qRound(lineEdit->text().toDouble());
        return nValue;
    }
    

    Qt 还提供了定义大小的类型,例如 qint16 独立于编译器/平台,因此您不必使用 __int16

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2011-06-14
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多