文本以“行为开启”形式打印为十进制,但要求打印为整数QML

问题描述

我想打印文本,但是当我使用Behavior时,文本以十进制格式打印在输出中,但是我想将输出文本打印为整数。请帮助我,我想念的是什么。所需的输出应为整数,而不是文本中的浮点数

import QtQuick 2.12
import QtQuick.Window 2.12

Window { 
    visible: true
    width: 1920
    height: 1080
    property real rpmValue: 0
    property real speedValue: 0
    property int  gear: 0
    function generator()
    {

        if ( gear == 0 )
        {
            rpmValue = rpmValue+7.5
            speedValue = speedValue
            gear = 1
        }
        else if ( gear == 1 )
        {
            if ( rpmValue > 150 )
            {
                rpmValue = 110;
                speedValue = speedValue
                gear = 2
            }
            rpmValue = rpmValue + 5
            speedValue = speedValue + 3
        }
        else if ( gear == 2 )
        {
            if ( rpmValue > 155 )
            {
                rpmValue = 110
                speedValue = speedValue
                gear = 3
            }
            rpmValue = rpmValue +3
            speedValue = speedValue +1.5
        }
        else if ( gear == 3 )
        {
            if ( rpmValue > 155 )
            {
                rpmValue = 110
                speedValue = speedValue
                gear = 4
            }
            rpmValue = rpmValue + 2
            speedValue = speedValue +1.2
        }
        else if ( gear == 4 )
        {
            if ( rpmValue > 155 )
            {
                rpmValue = 110;
                speedValue = speedValue - 1
                gear = 4
            }
            rpmValue = rpmValue + 1
            speedValue = speedValue + 1
        }

        if ( speedValue > 140 )
        {
            rpmValue = gear = 0
            speedValue = 0
        }
    }

    Timer{
        id:rpmAndspeedUpdate
        interval:300
        running:true
        repeat:true
        onTriggered: {
            generator()
        }
    }

    Text{
        id:speednumber
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 10
        width: 400
        height: 140
        text: parseInt(speedValue)
        color:"#d1d1d1"
        font{pixelSize: 90; styleName: 'DemiBold'}
        horizontalAlignment: Text.AlignHCenter
        Behavior on text {
            SpringAnimation{spring:0.1; damping:0.025; veLocity: 80}
        }
    }
}

解决方法

您只需要将动画移至Text项之外,以便在对速度值进行动画处理后才将转换为int!

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    visible: true
    width: 1920
    height: 1080
    property real rpmValue: 0
    property real speedValue: 0

    Behavior on speedValue {
        SpringAnimation{spring:0.1; damping:0.025; velocity: 80}
    }

    property int  gear: 0
    function generator()
    {

        if ( gear == 0 )
        {
            rpmValue = rpmValue+7.5
            speedValue = speedValue
            gear = 1
        }
        else if ( gear == 1 )
        {
            if ( rpmValue > 150 )
            {
                rpmValue = 110;
                speedValue = speedValue
                gear = 2
            }
            rpmValue = rpmValue + 5
            speedValue = speedValue + 3
        }
        else if ( gear == 2 )
        {
            if ( rpmValue > 155 )
            {
                rpmValue = 110
                speedValue = speedValue
                gear = 3
            }
            rpmValue = rpmValue +3
            speedValue = speedValue +1.5
        }
        else if ( gear == 3 )
        {
            if ( rpmValue > 155 )
            {
                rpmValue = 110
                speedValue = speedValue
                gear = 4
            }
            rpmValue = rpmValue + 2
            speedValue = speedValue +1.2
        }
        else if ( gear == 4 )
        {
            if ( rpmValue > 155 )
            {
                rpmValue = 110;
                speedValue = speedValue - 1
                gear = 4
            }
            rpmValue = rpmValue + 1
            speedValue = speedValue + 1
        }

        if ( speedValue > 140 )
        {
            rpmValue = gear = 0
            speedValue = 0
        }
    }

    Timer{
        id:rpmAndspeedUpdate
        interval:300
        running:true
        repeat:true
        onTriggered: {
            generator()
        }
    }

    Text{
        id:speednumber
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 10
        width: 400
        height: 140
        text: parseInt(speedValue)
        color:"#d1d1d1"
        font{pixelSize: 90; styleName: 'DemiBold'}
        horizontalAlignment: Text.AlignHCenter
    }
}